作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要建立诸如“Group hasMany users”和“User BelongToMany groups”之类的关联。
但我无法得到正确的结果,它总是使用错误的表groups_relations
我的模型:
class GroupsTable extends Table
{
public function initialize(array $config)
{
$this->setTable('groups');
$this->setDisplayField('title');
$this->setPrimaryKey('id');
$this->hasMany('Users', [
'joinTable' => 'groups_relations',
'foreignKey' => 'user_id',
]);
}
}
class UsersTable extends Table
{
public function initialize(array $config)
{
$this->table('user_users');
$this->belongsToMany('Groups', [
'joinTable' => 'groups_relations',
'foreignKey' => 'group_id',
]);
}
}
class GroupsRelationsTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('groups_relations');
$this->setDisplayField('group_id');
$this->setPrimaryKey('id');
$this->belongsTo('Groups', [
'foreignKey' => 'group_id',
'joinType' => 'INNER'
]);
$this->belongsToMany('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
}
}
还有我的表groups_relations:
id |组 ID | user_id
我运行查询:
$groupsWithUsers = $this->Groups->find('all', array(
'contain' => array('Users')
));
我不明白如何告诉 cake 使用我的中间表并将结果附加到数组。
最佳答案
joinTable
不是 hasMany
关联的有效配置键。我认为您希望拥有群组 belongsToMany
用户。另一个线索是 hasMany
是 belongsTo
的“对立面”,而 belongsToMany
则是它自己的对立面。 (也就是说,如果 A hasMany
B,则 B belongsTo
A,但如果 A belongsToMany
B,则 B belongsToMany
A.) 请注意,您还需要将 GroupsRelations 与 Users 的关联更改为 belongsTo
。
这段代码是为您编写的吗?因为它应该更了解。当我遇到粘性关联问题时,有时我会让 Cake 为我烘焙模型代码,然后看看结果与我编写的结果有何不同。
关于php - CakePHP关联关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44850507/
我是一名优秀的程序员,十分优秀!