如何修改CakePHP的连接条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修改CakePHP的连接条件相关的知识,希望对你有一定的参考价值。
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;
}
}
答案
你可以检查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;
}
}
以上是关于如何修改CakePHP的连接条件的主要内容,如果未能解决你的问题,请参考以下文章