さて、Cakephp 2.2.3 での私のプロジェクトでは、データベースとコントローラーをセットアップし、すべてをベイクしました。私はそれをすべて再確認し、すべてが機能しています(追加、編集、削除)。私がうまくいかないことの1つは、users
テーブルとテーブルの間の中間テーブルに保存することwebsites
です。中間テーブルはuser_websites
. テーブルには、、 の3user_websites
つのフィールドしかありません。id
user_id
website_id
登録ユーザーとしてログインして Web サイトの追加ページに移動すると、Web サイトを問題なく追加できますが、テーブルにのみ保存され、websites
テーブルには何も保存されませんuser_websites
。の add 関数をいじると、 をテーブルにWebsitesController
保存できますが、 . 明らかに、新しいWebサイトを追加するときに、そのレコードをテーブルに保存し、現在ログインしているユーザーのIDと保存したばかりのレコードをテーブルに追加する必要があります。どんな助けでも大歓迎です。ありがとう!website_id
user_websites
user_id
websites
user_websites
website_id
これが私のコードです:
ユーザーモデル
public $hasMany = array(
'UserWebsite' => array(
'className' => 'UserWebsite',
'foreignKey' => 'user_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
ウェブサイト モデル
public $hasMany = array(
'UserWebsite' => array(
'className' => 'UserWebsite',
'foreignKey' => 'user_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
public $hasAndBelongsToMany = array(
'User' => array(
'className' => 'User',
'joinTable' => 'users_websites',
'foreignKey' => 'website_id',
'associationForeignKey' => 'user_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
UserWebsite モデル
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Website' => array(
'className' => 'Website',
'foreignKey' => 'website_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
ウェブサイトコントローラー
public function add() {
if ($this->request->is('post')) {
$this->Website->create();
if ($this->Website->UserWebsite->saveAll($this->request->data, array('deep' => true))) {
$log = $this->Website->getDataSource()->getLog(false, false);
debug($log);
$this->Session->setFlash(__('The website has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The website could not be saved. Please, try again.'));
}
}
}