That is my Query object dump from debug...
我想在方法JOIN
子句中添加更多条件,或者我想在CakePHP执行连接时设置默认条件。
我的代码:
public function beforeFind(Event $event, Query $query)
{
if ($query->join()) {
foreach ($query->join() as $key => &$join) {
$join['conditions'] = new QueryExpression('"aaaa" = "bbbbb"');
}
return $query;
}
}
答案 0 :(得分:2)
您可以查看CakePHP Docs。
我相信你在搜索这样的东西:
class CustomerTable extends Table
{
public function initialize(array $config)
{
$this->hasOne('User')
->setName('User')
->setConditions(['User.active' => '1']) // or any other additional clause
->setDependent(true);
}
}
如果您需要挂钩正常的关联行为,我建议您使用innerJoinWith。
作为硬编码解决方案(我可以从您的代码示例中看到),请阅读join method docs:
$query->join([
'user' => [
'table' => 'user',
'type' => 'INNER',
'conditions' => '"aaaa" = "bbbbb"'
]
]);
现在有些心灵感应,... abracadabra,...等待,等等......试试这个:
public function beforeFind(Event $event, Query $query)
{
$joins = $query->join();
if ($joins) {
foreach ($joins as $key => &$join) {
if ($key == 'user')
$join['conditions'] = ($join['conditions'] ? ' AND ' : '') . ' "aaaa" = "bbbbb"';
}
return $joins ? $query->join($joins) : $query;
}
}