为什么我所属的社团不在CakePHP工作?

为什么我所属的社团不在CakePHP工作?,php,cakephp-3.0,Php,Cakephp 3.0,我的数据库中有用户、团队和团队用户表。创建新团队时,我希望将团队和用户以及一些附加信息保存到联接表中。然而,CakePHP3似乎没有认识到用户和团队之间的关系 \Model\Table\UsersTable.php $this->belongsToMany('Teams', [ 'joinTable' => 'teams_users', ]); $this->belongsToMany('Users', [ 'joinTable' => 'teams_u

我的数据库中有用户、团队和团队用户表。创建新团队时,我希望将团队和用户以及一些附加信息保存到联接表中。然而,CakePHP3似乎没有认识到用户和团队之间的关系

\Model\Table\UsersTable.php

$this->belongsToMany('Teams', [
    'joinTable' => 'teams_users',
]);
$this->belongsToMany('Users', [
    'joinTable' => 'teams_users',
]);
$this->belongsTo('Teams');
$this->belongsTo('Users');
\Model\Table\TeamsTable.php

$this->belongsToMany('Teams', [
    'joinTable' => 'teams_users',
]);
$this->belongsToMany('Users', [
    'joinTable' => 'teams_users',
]);
$this->belongsTo('Teams');
$this->belongsTo('Users');
\Model\Table\TeamsUsersTable.php

$this->belongsToMany('Teams', [
    'joinTable' => 'teams_users',
]);
$this->belongsToMany('Users', [
    'joinTable' => 'teams_users',
]);
$this->belongsTo('Teams');
$this->belongsTo('Users');
\Controller\teamscocontroller.php

function Create() {
...
    $user = $teamsTable->Users->get($this->Auth->user('id'));
    $user->_joinData = $teamsTable->TeamsUsers->newEntity();

Error: Table "App\Model\Table\TeamsTable" is not associated with "TeamsUsers"

首先,你应该使用这个选项

还有很多人认为你能做到:

那么_joinData不需要是
TeamsTables
对象,可以是一个简单的实体(请参见):

或者您可以加载您的模型

$this->loadModel('TeamsUsers')
$user->_joinData = $this->TeamsUsers->newEntity()

最后是这样的:

谢谢你的忠告。到底是这样的:

if ($this-request->is('post')) {
            $team = $this->Teams->patchEntity($team, $this->request->data);
            $user = $this->Teams->Users->get($this->Auth->user('id'));
            $teams->save($team);

            $user->_joinData = new Entity();
            $user->_joinData->nickname = $nickname;

            $this->Teams->Users->link($team, [$user]);
            $teams->save($team);
        }

您必须使用选项应该是通过团队用户还是团队用户?-这两种方法似乎都不起作用。这取决于如何命名表对象和数据库表。你可以随意命名