gpt4 book ai didi

php - 深度加入Cakephp

转载 作者:行者123 更新时间:2023-11-30 21:55:35 26 4
gpt4 key购买 nike

我在使用 find() 方法和 cakephp 2 中的深度连接时遇到问题。

我正在构建一个 search() 函数,它应该在 3 个模型中进行搜索:Contact、Building 和 City,其中 Contact 包含 Building,Building 包含 City。

这是我的要求:

$options['contain'] = array(
'User' => array(
'fields' => array('id', 'first_name', 'last_name')
),
'Building' => array(
'City' => array(
'fields' => array('name')
),
'fields' => array('id', 'title')
)
);

$options['conditions']['OR'] = array(
array('Contact.id LIKE' => '%'.$search.'%'),
array('User.first_name LIKE' => '%'.$search.'%'),
array('User.last_name LIKE' => '%'.$search.'%'),
array('Building.title LIKE' => '%'.$search.'%'),
array('Building.City.name LIKE' => '%'.$search.'%'),
);

$contacts = $this->Contact->find('all', $options);

但这会产生以下 WHERE 条件:

WHERE `Contact`.`white_label_id` = 18 AND ((`User`.`first_name` LIKE '%jean%') OR (`User`.`last_name` LIKE '%jean%') OR (`Building`.`title` LIKE '%jean%') OR (`Building`.`City`.`name` LIKE '%jean%'))

问题出在 City 模型上,我无法在其中搜索名称字段。有人可以帮助我吗?

最佳答案

我得到与绑定(bind)模型相同的结果“未找到列:1054 Unknown column City.name in where clause”:

$this->Contact->bindModel(array(
'hasOne' => array(
'City' => array(
'foreignKey' => false,
'conditions' => array('City.id = Contact.Building.city_id')
)
)
));

$options['contain'] = array(
'User' => array(
'fields' => array('id', 'first_name', 'last_name'),
),
'Building' => array(
'City' => array(
'fields' => array('name'),
),
'fields' => array('id', 'title')
)
);

$options['conditions']['OR'] = array(
array('Contact.id LIKE' => '%'.$search.'%'),
array('User.first_name LIKE' => '%'.$search.'%'),
array('User.last_name LIKE' => '%'.$search.'%'),
array('Building.title LIKE' => '%'.$search.'%'),
array('City.name LIKE' => '%'.$search.'%')
);

$contacts = $this->Contact->find('all', $options);

我在 sql 查询中的 WHERE 子句:

WHERE `Contact`.`white_label_id` = 33 AND ((`Contact`.`id` LIKE '%fouillard%') OR (`User`.`first_name` LIKE '%fouillard%') OR (`User`.`last_name` LIKE '%fouillard%') OR (`Building`.`title` LIKE '%fouillard%') OR (`City`.`name` LIKE '%fouillard%'))

我弄乱了 bindModel 吗?

关于php - 深度加入Cakephp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com