如何在PHP中通过外部API按work_location_id筛选hr.employee
如何通过PHP调用Odoo外部API按work_location_id筛选hr.employee?
正确实现代码
针对work_location_id这种返回格式为[ID, 名称]的关联字段,Odoo外部API筛选时直接使用字段名匹配ID即可,注意参数结构和ID类型:
$id = (int)$_GET['id']; // 转换为整数,避免字符串类型匹配失败 // 执行search_read查询 $employees = $models->execute_kw( $db, $uid, $password, 'hr.employee', 'search_read', array( // 筛选条件domain:二维数组结构 array(array('work_location_id', '=', $id)), // 可选:指定返回字段,优化数据返回 array('fields' => array('name', 'work_location_id', 'job_id')) ) );
无效写法的原因及排查点
- 你尝试的
work_location_id[0]写法错误:Odoo的domain筛选针对的是字段在数据库中的存储值(即关联ID),而非返回结果的数组结构,因此不能用数组下标来筛选。 - 若直接用
work_location_id筛选无效,优先排查:$id是否为整数:$_GET['id']默认是字符串,需强制转换为整数类型。- domain结构是否正确:必须是二维数组,外层数组包裹筛选条件组,内层是单个条件数组。
- API用户权限:确认当前用户拥有
hr.employee模型的读取权限,以及work_location_id字段的访问权限。 - 字段名拼写:检查Odoo模型中该字段的准确名称是否为
work_location_id,避免拼写错误。
内容的提问来源于stack exchange,提问作者tropapetz
相关产品推荐
相关产品推荐

