簡體   English   中英

hasMany在Cake PHP中無法正常工作

[英]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或表名稱。 另見本文

你的協會應該是:

  • 用戶hasAndBelongsToMany UsersGroup
  • UsersGroup屬於Too User
  • UsersGroup屬於UserGroup

當用戶只能屬於一個用戶組時,根本不需要連接表。 如果您現在嘗試相同的查詢(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM