[英]hasMany in Cake PHP not working
我有一個名為group_joins的表:上表的字段是,
1)id,
2)group_id,
3)user_id,
4)created
另外兩個表是用戶,user_groups,group_id引用user_groups表的主鍵,user_id引用users表的主鍵。
現在我創建了一個名為GroupJoin的模型,我想將上述兩個表(users,user_groups)表與group_joins相關聯,我可以獲取已加入該組的所有用戶。
我將group_id作為參數傳遞給action。 我必須獲取屬於該組的所有用戶。
我的模型如下:
var $belongsTo = array(
'UserGroup' => array(
'className' => 'UserGroup',
'foreignKey' => 'group_id'
)
);
var $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
)
);
在我的控制器中,查詢如下:
$groupArrs = $this->GroupJoin->find('all',array('conditions'=>'GroupJoin.group_id ="'. $group_id.'"'));
但它顯示SQL錯誤:1054:'字段列表'中的未知列'User.user_id'
那么我如何獲得屬於該組的所有用戶。
首先,您對連接表的命名不遵循CakePHP約定。 它應該是groups_users(模型名稱:GroupsUser)而不是groups_join或表名稱。 另見本文 。
你的協會應該是:
當用戶只能屬於一個用戶組時,根本不需要連接表。 如果您現在嘗試相同的查詢(UsersGroup.group_id => $ groupId)它應該工作。
此外,您還沒有遵循CakePHP中變量名稱的約定:它應該是$ groupId而不是$ group_id。 並使用適當的可見范圍關鍵字而不是“var”。
使用數據庫中的用戶表創建user_id作為外鍵。
我認為最好遵循burzum的例子。
你的模型看起來像這樣:
class User extends AppModel{
public $hasMany = array(
'UserGroup' => array(
'className' => 'UserGroup',
'foreignKey' => 'user_id'
)
);
}
class Group extends AppModel{
public $hasMany = array(
'UserGroup' => array(
'className' => 'UserGroup',
'foreignKey' => 'group_id'
)
);
}
class UserGroup extends AppModel{
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
),
'Group' => array(
'className' => 'Group',
'foreignKey' => 'group_id'
)
);
}
希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.