2015-02-24 80 views
1

我无法在Cake 3.0中保存关联的数据。我有一个用户模型,用户可以是许多不同的音乐家。我有一个连接表users_musicians。CakePHP 3.0保存belongsToMany不保存

class UsersTable extends Table { 

    public function initialize(array $config) { 
     $this->addBehavior('Timestamp'); 

     $this->belongsToMany('Musicians', [ 
      'joinTable' => 'users_musicians', 
     ]); 

     $this->belongsTo('Counties', [ 
      'foreignKey' => 'county_id', 
      'joinType' => 'INNER', 
     ]); 
    } 

我张贴了一个新的用户,并试图保存在users_musicians表中的单个音乐家类型,使用musician_id贴过,并使用保存新用户的USER_ID。 “users_musicians” 的

public function add() { 
    $user = $this->Users->newEntity(); 
    if ($this->request->is('post')) { 
     $user = $this->Users->patchEntity($user, $this->request->data); 
     $newData = [ 
      'users_musicians' => [ 
       ['musician_id' => 10], 
      ] 
     ]; 
     $this->Users->patchEntity($user, $newData); 

     echo '<br><br><pre>' . print_r($user, true) . '</pre>'; 
     //die(); 
     if ($this->Users->save($user)) { 
      $this->Flash->success(__('Your details have been saved.')); 
      return $this->redirect(['action' => 'index']); 
     } 
     $this->Flash->error(__('Unable to add your details.')); 
    } 
    $this->set('user', $user); 
} 

表药结构为: ID - INT,AI,PK, USER_ID - INT, musician_id - INT, 创建 - 日期时间, 更新时间 - 日期时间

有什么建议?

+0

你到底想要做什么,将一个新的'Users'记录与一个已有的'Musicians'记录关联起来,这个记录的主键是'10'? – ndm 2015-02-26 13:35:24

+0

我只是添加了一些东西,看看它是否会保存。在我创建了一个新的MusiciansUsers模型之后,我确实得到了它的工作,它与一个Users之间的belongsTo关系。所以它现在保存到musucians_users表中,如我所愿。根据aavrug的建议,我将这张表更名为。 – 2015-02-27 10:43:01

回答

1

在CakePHP for belongsToMany关联中,表名应该按字母顺序排列,因此,将“users_musicians”表名更改为“musicians_users”并尝试。