5

外部の理由により、結合レコードを結合の一部として保存するのではなく、直接保存する必要がある状況があります。これが私が意味することです:

  • Firm外部ソースからデータを取得するモデルがあります。
  • Countyアプリ データベースにモデルがあります
  • これらの外部企業を郡に関連付けるために使用するcounties_firms結合テーブルがあります。

何がどこに住んでいるのかという理由で、私はモデルを編集していませんし、Firmモデルを編集していませんCounty。私は本当に関連付けを編集しているだけです。Firm会社のデータを処理するために必要なすべてをカプセル化するモデルがあり、これらのメソッドの 1 つがFirm::saveCounties( $data ). これ:

  • 関連付ける必要がある企業 ID と郡 ID を含む着信データを受け入れます。
  • その郡の既存のすべての結合レコードを削除します
  • 新しい結合レコードをすべて保存しようとします。

私が見つけたのは、最後の郡の記録だけが保存されているということです。着信データは次のとおりです。

Array
(
    [0] => Array
        (
            [firm_id] => 13
            [county_id] => 4fa16e24-a25c-4523-8a9e-7d1d147402e8
        )

    [1] => Array
        (
            [firm_id] => 13
            [county_id] => 4fa16e27-ccd0-4f22-97da-7d1d147402e8
        )

    [2] => Array
        (
            [firm_id] => 13
            [county_id] => 4fa16e4a-68f8-4fb1-95bb-7d1d147402e8
        )

)

そのデータが与えられたので、 と の間のオンザフライの関連付けを作成し、FirmCountiesFirm試みてい$this->CountiesFirm->saveAll( $data )ます。

前述したように、この例では 3 つの郡の関連付けのうち最後の 1 つだけが保存されています。私が見逃している可能性のあるものはありますか?

ありがとう。

4

2 に答える 2

0

配列のレベルが不足していると思います...もっと次のようになります...

Array(
    'CountiesFirm' => array(
        [0] => Array
        (
            [firm_id] => 13
            [county_id] => 4fa16e24-a25c-4523-8a9e-7d1d147402e8
        )
        [1] => Array
        (
            [firm_id] => 13
            [county_id] => 4fa16e27-ccd0-4f22-97da-7d1d147402e8
        )
        [2] => Array
        (
            [firm_id] => 13
            [county_id] => 4fa16e4a-68f8-4fb1-95bb-7d1d147402e8
        )
    )
)

それを試して、結果を知らせてください

于 2012-06-01T13:19:44.300 に答える