我有两张桌子。第一个名为Users并具有id,name等。第二个名为Field并具有id,name等。这两个表具有N:M关系,这意味着用户可以拥有多个喜欢的字段和一个字段可以有多个粉丝。该关系使第三个表名为UsersFields,并具有id,user_id,field_id。
问题是我需要获取与user_id相关联的字段的名称和ID,换句话说,所有用户喜欢的字段。我有这样的SQL查询。我不确定这是否有效。 例如,如果我有一个$ user_id = 1。
Select F.name, F.id
from Fields F, UsersFields UF
where UF.user_id = $user_id
and F.id = UF.field_id
我是CakePHP的新手,我一直在寻找解决方案,但我无法让它发挥作用。
现在我有类似的东西。
$fields = $this->loadModel('Fields');
$query = $fields->find()->contain('UsersFields', function ($q) {
return $q
->select(['field_id'])
->where(['UsersFields.user_id' => $id]);
});
但是在视图中,我得到了所有的Fields行。
任何人都可以帮助我。
修改
感谢ndm,我可以使用https://stackoverflow.com/questions/26799094/how-to-filter-by-conditions-for-associated-models