Tôi đã sử dụng sau chèn mảng để chèn nhiều mục trong LaravelEloquent ORM
Sử dụng updateOrCreate cho nhiều chèn dữ liệu trong Laravel
$i = 0;
foreach($exerciseValArray as $kkey=>$exerciseValue){
if($exerciseValue['exercise'] =='' || $exerciseValue['section_type'] == ''){
return Response::JSON(array('errors'=>array('Error in workout exercise section')));
}
$exerciseData = explode(',',$exerciseValue['exercise']);
foreach($exerciseData as $exerciseid){
$insertArray[$i]['fk_workouts_id'] = $id;
$insertArray[$i]['fk_users_id'] = $userId;
$insertArray[$i]['fk_exercises_id']= $exerciseid;
$insertArray[$i]['section'] = $exerciseValue['section_type'];
$insertArray[$i]['status'] = 1;
$insertArray[$i]['item_index'] = $index+$kkey+1;
$insertArray[$i]['updated_at'] = $workoutDetails['updated_at'];
$i++;
}
}
WorkoutExercise::insert($insertArray);
Đoạn mã trên hoạt động tốt và chèn mảng dữ liệu trong cơ sở dữ liệu .
Tôi đã học được cách sử dụng của Model::updateOrCreate
và sử dụng nó trong một số module của tôi thành công (nghĩa là)
Model::updateOrCreate($attributes = array('key' => 'value'), $values = array('key' => 'value'));
Câu hỏi của tôi là làm thế nào để chỉnh sửa đoạn chèn ở trên để tôi có thể sử dụng Model::updateOrCreate
trong đó. Các trường $attributes
của tôi là 'fk_workouts_id', 'fk_users_id', 'fk_exercises_id' và các trường còn lại trong số $values
sẽ được thay đổi.
Tôi không biết cách triển khai điều này. Xin vui lòng giúp đỡ ...
Eloquent không thể chèn/cập nhật nhiều hàng, bạn cần xử lý từng hàng một. Phương thức 'insert' trong thực tế là' Query \ Builder 'và nó không sử dụng các tính năng Eloquent (ví dụ: timestamps và vv). –
là có cách nào khác trong 'Eloquent' hoặc' Query \ Builder' mà tôi có thể tạo mục nhập hoặc cập nhật nếu có sự hiện diện của dữ liệu @JarekTkaczyk.Bởi vì tôi cần phải cập nhậtOrCreate gần 20-50 dữ liệu là nó là một thực hành tốt để làm điều đó từng người một? – Ronser
Thực hành tốt theo cách nào? Bạn có thể viết 3 dòng mã và để cho Eloquent thực hiện công việc, hoặc nói 13 dòng mã, nơi bạn thực hiện công việc. Eloquent có 'firstOrNew' phương pháp, đó là con đường để đi. –