Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模型:对连接语句应用条件_Php_Lithium - Fatal编程技术网

Php 模型:对连接语句应用条件

Php 模型:对连接语句应用条件,php,lithium,Php,Lithium,我想在模型的联接上添加一些条件 这是我尝试过的,结果没有改变: Members::find('all', [ 'fields' => ['name', 'Count(Orders.id)'], 'with' => 'Orders', // 'joins' => [ // 'Orders' => 'Orders.status = delivered' // ] ]); 这是我

我想在模型的联接上添加一些条件

这是我尝试过的,结果没有改变:

    Members::find('all', [
        'fields' => ['name', 'Count(Orders.id)'],
        'with' => 'Orders',
        // 'joins' => [
        //  'Orders' => 'Orders.status = delivered'
        // ]
    ]);
这是我的工作示例查询:

SELECT name, COUNT(orders.id) FROM members
LEFT JOIN orders ON orders.member_id = members.id AND orders.status = 'delivered'
GROUP BY member_id
编辑:

我还尝试了基于


但是创建的查询不包含已定义的联接参数('Orders.status'=>'delivered')

您试图执行的操作在概念上是错误的。请尝试将
状态='delivered'
放入查询的where子句中。有关更多信息,请阅读以下内容:

虽然您正在编写的查询在读取时有意义,并且(可能)会产生相同的结果,但是您混合了
join子句
where子句

  • Join子句
    应包含将两条记录“连接”在一起所需的条件(即相同的名称、相同的名字和姓氏、相同的品牌和型号等)

  • Where子句
    应包含仅返回满足条件的记录所必需的条件。这些记录可以来自单个表(通常),也可以来自多个表(在连接的情况下)

$joins = array();
$joins[] = new \lithium\data\model\Query(array(
     'source' => 'orders',
     'type' => 'LEFT',
     'constraint' => array('Orders.status' => 'delivered'),
));


Members::find('all', [
    'fields' => ['name', 'Count(Orders.id)'],
    'with' => 'Orders',
    'joins' => $joins
]);