gpt4 book ai didi

php - CakePHP:如何更改此查找调用以包含关联表中不存在的所有记录?

转载 作者:行者123 更新时间:2023-11-30 23:41:09 25 4
gpt4 key购买 nike

我有几个表具有以下关系:

公司有许多职位、员工和卡车、用户

我已经正确设置了所有外键,以及表的模型、 Controller 和 View 。

最初,Jobs 表有一个名为“assigned”的 bool 字段。以下查找操作(来自 JobsController)成功返回所有员工、所有卡车和任何分配的工作,并在某一天为一家公司返回(不返回用户,通过使用可包含的行为):

$this->set('resources', $this->Job->Company->find('first', array(
'conditions' => array(
'Company.id' => $company_id
),
'contain' => array(
'Employee',
'Truck',
'Job' => array(
'conditions' => array(
'Job.assigned' => false,
'Job.pickup_date' => date('Y-m-d', strtotime('Today'));
)
)
)
)));

现在,自从编写这段代码后,我决定在工作分配方面做更多的事情。所以我创建了一个新模型“Assignment”,它属于 Truck 和 belongsTo Job。我已经将 hasMany Assignments 添加到 Truck 模型和 Jobs 模型中。我在分配表中有两个外键,以及一些其他分配字段。

现在,我试图获得与上述相同的信息,只是我不想检查作业表中的分配字段,而是想检查分配表以确保该作业不存在。如果由于 mysql 错误而要使用 find 方法的“连接”功能(根据食谱),我将无法再使用可包含的行为。但是,以下查询会返回所有职位,即使它们属于不同的日子。

$this->set('resources', $this->Job->Company->find('first', array(
'joins' => array(
array(
'table' => 'employees',
'alias' => 'Employee',
'type' => 'LEFT',
'conditions' => array(
'Company.id = Employee.company_id'
)
),
array(
'table' => 'trucks',
'alias' => 'Truck',
'type' => 'LEFT',
'conditions' => array(
'Company.id = Truck.company_id'
)
),
array(
'table' => 'jobs',
'alias' => 'Job',
'type' => 'LEFT',
'conditions' => array(
'Company.id = Job.company_id'
)
),
array(
'table' => 'assignments',
'alias' => 'Assignment',
'type' => 'LEFT',
'conditions' => array(
'Job.id = Assignment.job_id'
)
)
),
'conditions' => array(
'Job.pickup_date' => $day,
'Company.id' => $company_id,
'Assignment.job_id IS NULL'
)
)));

编辑:事实证明,我的查询有效,我的数据有问题导致所有分配被返回。

最佳答案

我的查询没有问题。原来是数据问题导致我无法正确过滤作业。

关于php - CakePHP:如何更改此查找调用以包含关联表中不存在的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com