2016-10-13 5 views
0

少し問題があります。 My CommodityモデルにはHasがあり、Userモデルとの関連性が高い。 DB内ではcommodities_usersテーブルに関連しています。ですから、新しい商品が作成されたときに、CakephpがDBのcommodities_usersテーブルに新しいレコードを作成したいと思います。しかし、それは動作しません。 マイ$this->request->data配列(私は1個の新しい商品を節約したい)このcakephpにHABTM関連データを保存する

array(
    'Commodity' => array(
     'commodity_type' => '0', 
     'commoditygroup_id' => '', 
     'name' => 'asdfad', 
     'code' => '', 
     'ean' => '', 
     'costprice' => '', 
     'saleprice' => '12512,123', 
     'default_vatrate' => '', 
     'saleprice_gross' => '', 
     'sync_cashconnector' => '1', 
     'commoditysetting_id' => '', 
     'default_amount_enabled' => '0', 
     'default_amount' => '', 
     'stock_min' => '', 
     'stock' => '', 
     'comment' => '' 
    ), 
    'User' => array(
     (int) 0 => array(
      'id' => '23' 
     ), 
     (int) 1 => array(
      'id' => '24' 
     ), 
     (int) 2 => array(
      'id' => '30' 
     ), 
     (int) 3 => array(
      'id' => '31' 
     ) 
)); 

のように見えると私は$this->Commodity->saveAll($this->request->data);

私のCakePHPのバージョン商品モデルをこのように保存しています2.4です。 関係は

var $hasAndBelongsToMany = array(
      'User' => array(
        'className' => 'User', 
        'joinTable' => 'commodities_users', 
        'foreignKey' => 'commodity_id', 
        'associationForeignKey' => 'user_id', 
      ), 
    ); 

私は間違っていますか?

+0

あなたはcakephpのバージョンについて言及しておらず、モデルコードとテーブルのスキーマについても関係を表示していません。あなたがそれを共有すればもっと助けてくれるでしょう – tarikul05

+0

@ tarikul05、見て、私はいくつかの変更を行いました。 – Vladislav

+0

** "public" ** instate ** ** "var" **をあなたの関係に追加してください。 – tarikul05

答えて

0

私は自分で解決しました。私はまさにダムであり、商品モデルのちょうどHABTM協会を書いていました。ユーザーモデルに同じものを追加することで問題は解決しました。そして、$this->reuqest->data配列はそうだった

array(
    'Commodity' => array(
     'commodity_type' => '0', 
     'commoditygroup_id' => '', 
     'name' => 'asdfad', 
     'code' => '', 
     'ean' => '', 
     'costprice' => '', 
     'saleprice' => '12512,123', 
     'default_vatrate' => '', 
     'saleprice_gross' => '', 
     'sync_cashconnector' => '1', 
     'commoditysetting_id' => '', 
     'default_amount_enabled' => '0', 
     'default_amount' => '', 
     'stock_min' => '', 
     'stock' => '', 
     'comment' => '' 
    ), 
    'User' => array(
     'id' => array(
      '0' => '23', 
      '1' => '24', 
      '2' => '25' 

)); 

お時間をありがとう!

0

saveAll()に正しいデータを入力していません。次のように

CakePHPのドキュメントを1として、あなたのデータを構造化する適切な方法は次のとおりです。

array(
    array(
     'Commodity' => array(
      'commodity_type' => '0', 
      'commoditygroup_id' => '', 
      'name' => 'asdfad', 
      'code' => '', 
      'ean' => '', 
      'costprice' => '', 
      'saleprice' => '12512,123', 
      'default_vatrate' => '', 
      'saleprice_gross' => '', 
      'sync_cashconnector' => '1', 
      'commoditysetting_id' => '', 
      'default_amount_enabled' => '0', 
      'default_amount' => '', 
      'stock_min' => '', 
      'stock' => '', 
      'comment' => '' 
     ), 
     'User' => array(
      'User' => array('23','24','30','31') 
     ) 
    ) 
); 

あなたは、その後にデータを保存します。

を参照して、さらに参考のため

$this->Commodity->saveAll($this->request->data, array('deep' => true)) 

関連する問題