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
]);