如何修改CakePHP的连接条件

问题描述 投票:1回答:1

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 join
1个回答
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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.