5

我有一种情况,由于外部原因,我必须直接保存连接记录,而不是将它们保存为连接的一部分。这就是我的意思:

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

由于生活在哪里,我没有编辑Firm模型,也没有编辑County模型。我真的只是在编辑关联。我有一个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
        )

)

鉴于这些数据,我正在创建 和 之间的动态关联FirmCountiesFirm并试图$this->CountiesFirm->saveAll( $data ).

正如我所提到的,在这个例子中只有最后 3 个县协会得到了保存。知道我可能会错过什么吗?

谢谢。

4

2 回答 2

4

你的数组很好。模型似乎没有清除其 id,您可以尝试将 ['id'] => null 添加到数组中的每条记录以强制清除模型 id。

这对我有用。

于 2014-11-14T11:55:13.150 回答
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 回答