我有两个相关的模型。现在我需要从 Field-Model 检索数据,其中 UserField 上的连接条件匹配:
我有 UserField 的 ID,想得到它的相关字段(-data): 相应的 sql 如下所示:
SELECT Field.*
FROM fields AS Field
JOIN user_fields AS UserField
ON UserField.field_id = Field.id
WHERE UserField.id = 3;
我想用蛋糕模型逻辑来写这个。
模型:
class Field extends AppModel {
public $hasMany = array(
'UserField' => array(
'className' => 'UserField',
'foreignKey' => 'field_id'
)
);
}
class UserField extends AppModel {
public $belongsTo = array(
'Field' => array(
'className' => 'Field'
)
);
}
查找:
$this->Field->hasMany['UserField']['conditions'] = array('UserField.id' => 3);
$this->Field->find('all');
查询的Result都是Field,而UserField只在条件匹配的地方设置。我需要将结果限制为仅匹配的情况:
array(
(int) 0 => array(
'Field' => array(
'id' => (int) 1
),
'UserField' => array()
),
(int) 1 => array(
'Field' => array(
'id' => (int) 2
),
'UserField' => array()
),
(int) 2 => array(
'Field' => array(
'id' => (int) 3
),
'UserField' => array(
'id' => (int) 3
)
)
)
我的期望
array(
(int) 2 => array(
'Field' => array(
'id' => (int) 3
),
'UserField' => array(
'id' => (int) 3
)
)
)
UserField 是可选的,我只想检索 Field 数据。
最佳答案
我相信你想做这样的事情:
$rows = $this->Field->find('all', array(
'conditions' => array(
'UserField.id' => 3
)
);
关于php - 仅查找连接条件匹配的 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25202055/