我设置了我的模型,并且以下find()返回下面的数组。
查询:
find('all', array(
'conditions' => array(
'Teamstarter.season' => $season),
'contain' => array(
'Teamstarter.Fflteam')
)
);
结果:
Array
(
[0] => Array
(
[Score] => Array
(
[id] => 1
[teamstarter_id] => 1
[roster_id] => 1
[score] =>
[position] => QB
)
[Teamstarter] => Array
(
[id] => 1
[season] => 2013
[gameday] => 1
[fflteam_id] => 1
[is_flex] => 0
[Fflteam] => Array
(
[id] => 1
[user_id] => 1
[active] => 1
[name] => testteam11
[league_id] => 1
)
)
)
现在我想在Fflteam模型中为league_id添加一个条件。 我试着添加
'Teamstarter.Fflteam.league_id' => $league
到conditions数组,但后来我得到一个sql错误,找不到列'Teamstarter.Fflteam.league_id'。 如何添加引用更深层次字段的条件。
自找到模型后,应正确设置协议。
感谢您的帮助。
修改
下面的建议只删除了Fflteam部分
'contain' => array(
'Teamstarter.Fflteam' => array(
'conditions' => array(
'Fflteam.league_id' => $league
)
)
)
结果:
Array
(
[0] => Array
(
[Score] => Array
(
[id] => 1
[teamstarter_id] => 1
[roster_id] => 1
[score] =>
[position] => QB
)
[Teamstarter] => Array
(
[id] => 1
[season] => 2013
[gameday] => 1
[fflteam_id] => 1
[is_flex] => 0
[Fflteam] => Array
(
)
)
)
但我不希望它找到整个数组条目。在这种情况下,例如,如果league_id为2,则数组应该为空,而不仅仅是Fflteam部分。
答案 0 :(得分:2)
我在另一个帖子中找到了解决方案:
CakePHP 2.x containable behavior conditions on deep associations
这里有链接:
http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations
这里是我使用的代码:
$this->unbindModel(array(
'belongsTo' => array('Teamstarter')
));
$this->bindModel(array(
'hasOne' => array(
'Teamstarter' => array(
'foreignKey' => false,
'conditions' => array('Teamstarter.id = Score.teamstarter_id')
),
'Fflteam' => array(
'foreignKey' => false,
'conditions' => array('Fflteam.id = Teamstarter.fflteam_id')
)
)));
find('all', array(
'conditions' => array(
'Teamstarter.season' => $season,
'Fflteam.league_id' => $league),
'contain' => array(
'Teamstarter',
'Fflteam')
));
答案 1 :(得分:0)
尝试这样的事情:
'contain' => array(
'Teamstarter.Fflteam' => array(
'conditions' => array(
'Fflteam.league_id' => $league
)
)
),