1
私はこれをたくさん見つけましたが、何も私が探しているものに似ているようです..cakephp hasManyを使って一度に複数のレコードをリンクするには?
私はしようとしている複数のHTMLリスト。
の表は以下のとおりです。 ユーザー(ID、名前、ユーザ名) カード(ID、USER_ID)
モデル:
class User extends AppModel {
public $name = 'User';
public $hasMany = array('Card');}
class Card extends AppModel {
public $name = 'Card';
public $belongsTo = array('User');}
ユーザーedit.ctpビュー
echo $this->Form->input('id');
echo $this->Form->input('Card', array('multiple'=>true));
どのようにコントローラのように見えるだろうか?現在、それはこのように見えますが、
if (!empty($this->data)) {
foreach($this->data['User']['Card'] as $key => $item){
$this->data['User']['Card'][$key] = array('id'=>$item, 'user_id'=>$this->data['User']['id']);
}
if ($this->User->saveAll($this->data)) {
//$this->User->Card->saveAll($this->data);
$this->Session->setFlash(__('The user has been saved', true));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
}
}
if (empty($this->data)) {
$this->data = $this->User->read(null, $id);
$this->set('cards', $this->User->Card->find('list'));
}
ます$ this->はデータが含まれている「関連カードなしで」Userレコードだけを保存しない:
Array
(
[User] => Array
(
[id] => 1
[name] => Superman
[status] => 1
[Card] => Array
(
[0] => Array
(
[id] => 11402130001
[user_id] => 1
)
[1] => Array
(
[id] => 11402130002
[user_id] => 1
)
[2] => Array
(
[id] => 11402130003
[user_id] => 1
)
[3] => Array
(
[id] => 11402130004
[user_id] => 1
)
)
)
)
ありがとうございましたG.Jが動作しません!私はこれを前に試しましたが、問題が何であるかをuser_idに保存していませんか?私は1.3.4 – mmahgoub
@ mmahgoubを使用しています。あなたがUser配列の外側にCard配列を置くとどうなりますか?とにかくうまくいくとは思えません。そうでない場合は、ユーザーの代わりにカードを保存しようとすることで、自分のやり方を変えようとするべきでしょう。それが動作するかどうか教えてください。 –
こんにちはGJは実際にこのように動作します: 'if($ this-> user-> saveAll($ this-> data ['User'])){ $ this-> Session-> setFlash(__( 'ユーザーは保存されました '、true));}'しかし、別の問題が発生しました。 CakePHPは選択されていないアイテムを認識しません。言い換えれば、カードを選択するとカードにリンクすることができますが、選択を解除するとリンクが解除されます。任意のアイデアどのようにforeachループとsaveFieldとこの種のものなしでこれを達成するために? – mmahgoub