gpt4 book ai didi

php - Cake PHP 中的 hasMany 无法正常工作

转载 作者:可可西里 更新时间:2023-10-31 23:48:41 24 4
gpt4 key购买 nike

我有一个名为 group_joins 的表:上表的字段是这样的,

1)id,
2)group_id,
3)user_id,
4)created

另外两个表是users,和user_groups,group_id 引用user_groups 表的主键,user_id 引用users 表的主键。

现在我已经创建了一个名为 GroupJoin 的模型,我想将上面的两个表 (users, user_groups) 表与 group_joins 相关联,这样我就可以获取所有加入该组的用户。

我将 group_id 作为参数传递给操作。而且我必须获取属于该组的所有用户。

我的模型如下:

var $belongsTo = array(
'UserGroup' => array(
'className' => 'UserGroup',
'foreignKey' => 'group_id'
)
);

var $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
)
);

在我的 Controller 中查询如下:

$groupArrs = $this->GroupJoin->find('all',array('conditions'=>'GroupJoin.group_id ="'. $group_id.'"'));

但它显示 SQL 错误:1054:“字段列表”中的未知列“User.user_id”

那么我如何获得属于该组的所有用户。

最佳答案

首先,您对连接表的命名不遵循 CakePHP 约定。它应该是 groups_users(模型名称:GroupsUser)而不是 groups_join 或任何表名。另见 this pag即.

你的联想应该是:

  • 用户 hasAndBelongsToMany UsersGroup
  • 用户组属于用户
  • 用户组属于用户组

当一个用户只能属于一个用户组时,您根本不需要连接表。如果您现在尝试相同的查询 (UsersGroup.group_id => $groupId),它应该可以工作。

此外,您没有遵循 CakePHP 中变量名称的约定:它应该是 $groupId 而不是 $group_id。并使用适当的可见范围关键字而不是“var”。

关于php - Cake PHP 中的 hasMany 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17523047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com