2017-04-21 7 views
0

私はCakePHP 2.9.1を使用しています.HABTM関係に2つのテーブルがあり、ヘッダレコードを保存して、既に存在している、私はハードコードされたリストを使用してデータを保存することができるようだが、変数を使用していないようだ、私は何かばかげていると確信している、私はプラグイン内で実行している、メインコードにあります。CakePHP HABTM複数の既存の子にリンクされた単一のヘッダレコードを保存する

子レコードはメインシステムで処理されているため変更してはいけません。プラグインでリンクするだけで機能を拡張しています。ハードコードされ、私はその配列内の配列を渡すと、それを削除し、内破試してみた

$this->templatedoc->create(); 
      $data = [ 
       'templatedoc' => [ 
        'warning_adjust' => $prioritywarn, 
        'summary' => $summary, 
       ], 
       'Servicetemplate' => [ 
        1,2,3,10 // Dynamic data needed here! 
       ] 
      ]; 

      $result = $this->templatedoc->SaveAll ($data); 

しかし、私は「Servicetemplate」を持つことはできません。ここで

// Header Record 
class templatedoc extends TemplateModuleAppModel 
{ 
    public $useTable = 'templatedocs'; 
    public $hasAndBelongsToMany = [ 
     'Servicetemplate' => [ 
      'className' => 'Servicetemplate', 
      'joinTable' => 'templatedocs_to_servicetemplates', 
      'foreignKey' => 'templatedoc_id', 
      'associationForeignKey' => 'servicetemplate_id', 
      'unique' => true, 
      'dependent' => false, // We don't want to delete the Service Template by mistake! 
     ] 

    ]; 

} 

は私は、この作品保存されます配列はコンマで区切られたリストを作るために私は結局ヘッダ 'templatedoc'レコードが作成されていますが、私のリンクテーブルには何もありません

違いは、ハードコードされたリストはint値データベースから来ているので、文字列内のintになりますが、私はそれが問題であるのを見ることができません。

私が間違っていることは何ですか?それは完全に愚かな何かの場合は申し訳ありません。

答えて

0

私が最後にやらなければならなかったことは、foreachループで関連付けるときにintを強制的に格納することでした。

$items[] = (int) $id 

が、これは働いていた:

$this->templatedoc->create(); 
     $data = [ 
      'templatedoc' => [ 
       'warning_adjust' => $prioritywarn, 
       'summary' => $summary, 
      ], 
      'Servicetemplate' => [ 
       $items // Dynamic data needed here! 
      ] 
     ]; 

     $result = $this->templatedoc->SaveAll ($data); 

は、他の誰かが出て引っ掛かり場合には、ここで追加し、それがint型である必要があり、非常にうるさいらしい、よりよい解決策があるかどうかを知るのが大好きです。

関連する問題