저는 CakePHP 1.3을 사용하고 있습니다. 새로운 레코드이거나 이미 존재하는 경우 기존 레코드를 업데이트하는 경우 루프에 새 레코드 (수천 ~ 수천)를 삽입하려고합니다. 그러나 내가 저장하는 방식은 레코드가 이미 존재하는지 여부를 확인하지 않습니다. 대신 각 레코드에 기본 키 값을 할당합니다. 이 ID는 고유하게 보장됩니다. 이 ID가 존재하지 않는다면 CakePHP는 삽입을 알리고 그렇지 않으면 업데이트합니다.CakePHP 1.3 : 레코드를 삽입하거나 업데이트하는 올바른 방법
그러나 나는 올바른 방법으로하고 있는지 잘 모르겠습니다. 나는 새로운 레코드를 만들 때 을 루프이라면 $this->create()
이 필요하다. 나는 각 레코드가 고유 할 것이라는 것을 다른 함수에서 구현하고있다. 나는 오류없이 작동하는 것으로 여기에서하지 않으며, 나는 기록의 존재 여부를 각각 확인할 필요가 없다.
삽입하거나 업데이트하는 각 레코드 배열에는 해당 테이블의 기본 키를 나타내는 id
키가 있으며 각 배열에는 적절하게 연관된 두 모델의 데이터가 들어 있습니다.
예컨대
$this->saveAll($myData);
Array
(
[MyModel] => Array
(
[id] => 123
[xyz] => ...
...
)
[MySecondModel] => Array
(
[id] => 789
[my_model_id] => 123
[qwe] => ...
...
)
)
내가 잘하고 있어요, 또는 필요한 경우 나, $this->create()
다음 존재를 확인해야합니까 무엇입니까?
'흘린 데이터'부분에 대해 자세히 설명해 주시겠습니까? 내 데이터 배열에 반드시 모든 열이 정의되어있는 것은 아닙니다. 아마도 그 예가 있을까요? – musicliftsme
"spilling data"라는 말은 다음과 같습니다. "bar"열에 "foo"값으로 레코드를 업데이트한다고 가정하십시오. 다음 루프에서는 새 레코드를 만들지 만 create()를 호출하거나 "bar"를 설정하지 마십시오. 이 경우 새 레코드에도이 열에 "foo"가 포함됩니다. 네가 원하지 않을 수도있는 어떤 것. 그래서 매번 create()를 호출하는 것이 좋습니다. – JvO