グループhasManyユーザとユーザbelongsToManyグループのような関連付けを構築する必要があります。CakePHPアソシエーション関係テーブル
しかし、私は、それは常に間違ったテーブルを使用して正しい結果を得ることができない代わりに、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 | group_id |私は中間のテーブルを使用して配列にreusltsを追加ケーキに伝える方法を理解することはできません
$groupsWithUsers = $this->Groups->find('all', array(
'contain' => array('Users')
));
:user_idを
私は、クエリを実行します。
ええ、私はそれについて考えましたが、laravelのような$ user-> groupsと$ group-> usersが好きです。 – dkruchok
私はあなたの答えがあると思います。あなたが必要とするものを正確に実行するように見える** through **テーブルのオプションがあります。私は上記のエントリに例を追加しました。ここには本のリンクがあります。 https://book.cakephp.org/3.0/en/orm/associations.html#using-the-through-option – KaffineAddict