CAKEPHP查询 - 基于包含字段的条件



我正在开发一个系统,该系统保存客户的计算机报告并在列表中显示故障。我正在尝试编写一个查询,该查询可以找到过去失败或过去失败的所有系统。

我的Computers模型具有一个字段,该字段说last_report_pass,该字段使我能够快速找到当今失败的计算机。我的Reports与计算机ID相关联,并且具有一个名为status的字段,该字段说是通过还是失败。

我正在尝试编写一个查询,该查询只会显示last_report_pass0,或者失败,或者如果已找到并加入的报告,则显示它(这意味着先前的失败(。

这是我的想法:

$computers = $this->Computers->find('all', [
    'conditions' => [
        'last_report_pass' => '0',
        'COUNT(Reports) NOT' => '0'
    ],
    'contain' => [
        'Reports' => [
            'conditions' => [
                'status' => '0'
            ]
        ]
);

我不知道该怎么办。我可能可以在SQL中写这篇文章,但我正在尝试坚持使用Cake的Orm查询构建器。预先感谢!

您需要使用matching它的包含类似,但它将通过关联的数据过滤:

这将是这样的东西

$query->distinct(['Computers.id'])
    ->matching('Reports', function ($q) {
        return $q->where(['Reports.last_report_pass' => 0]);
    });

重要的是要注意,如果您需要在此表上显示一些数据,也必须使用contain CC_8表。

参考

最新更新