updateOrCreate Eloquent 메소드를 이해하는 데 문제가 있습니다.Eloquent updateOrCreate()가 모든 행을 덮어 씁니다. 이해하려고 시도합니다.
API에서 정보를 저장하고 매 x 분마다 실행하는 간단한 DB가 있습니다.
내가해야 할 것은 행이 DB에 없거나 다른 방법으로 UPDATE를 수행하고 변경된 데이터를 업데이트하는 경우 INSERT를 수행하는 것입니다.
어떻게하면 Laravel에서이 기능을 사용할 수 있습니까?
내가 지금 당장 가지고있는 것이지만, 모든 행에서 동일한 데이터가 다시 쓰여진다.
정확하게 이해했는지 확실하지 않습니다.
저는 기본적으로 "조건"을 전달합니다. 고유 한 경우 대조해야 할 입력란 - campaign_id + variation_id는 고유해야합니다. (그것은 MySQL의에서 UNIQUE 키에 의해 뒷받침) 내 데이터 배열 :
$data = [
'campaign_id' => $variation['campaign_id'],
'variation_id' => $variation['variation_id'],
'name' => $variation['name'],
'description' => $variation['description'],
];
MyModel::updateOrCreate(['campaign_id' => $variation['campaign_id'], 'variation_id' =>
$variation['variation_id'] ], $data);
쿼리 빌더 방법이다 updateOrInsert와 함께 작동하는 것 같다,하지만 난, 웅변과이를 달성하고 싶어 쉽게 될 것입니다 생각했다. 플러스 쿼리 빌더가 나를 위해 타임 스탬프를 채우지 않습니다.
어떤 힌트를 주셔서 감사합니다!
보호 된 $ primaryKey 특성을 모델에 설정 했습니까? – fmgonzalez
예, 실제로 설정되었습니다. protected $ primaryKey = 'campaign_id'; 문제가 될 수 있습니까? – depi