为什么saveAll()仅保存最后一条记录?

Rob*_*son 5 cakephp cakephp-1.3

由于外部原因,我不得不直接保存联接记录,而不是将它们保存为联接的一部分。这就是我的意思:

  • 我有一个Firm模型,其数据是从外部来源提取的。
  • County我的应用程序数据库中有一个模型
  • 我有一个counties_firms联接表,用于将这些外部公司与县联系起来。

由于生活在什么地方,我既不编辑Firm模型也不编辑County模型。我真的只是在编辑关联。我有一个Firm模型来封装我需要处理Firm数据的所有方法,其中之一是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
        )

)
Run Code Online (Sandbox Code Playgroud)

鉴于这些数据,我创建之间的即时协会FirmCountiesFirm和尝试$this->CountiesFirm->saveAll( $data )

如前所述,在此示例中,只有3个县协会中的最后一个被保存。知道我可能会缺少什么吗?

谢谢。

小智 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
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

尝试一下,让我知道你的结果