Ho usato il seguente inserto matrice per inserire più voci laravelEloquent ORM
Utilizzo updateOrCreate per l'inserimento dati multiplo in 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);
Il codice sopra funziona bene e inserisce schiera di dati al database .
ho imparato l'uso di Model::updateOrCreate
e lo ha utilizzato in alcuni dei miei moduli con successo (cioè)
Model::updateOrCreate($attributes = array('key' => 'value'), $values = array('key' => 'value'));
La mia domanda è come modificare il frammento di sopra inserto in modo che potessi usare Model::updateOrCreate
in esso. I miei campi $attributes
sono "fk_workouts_id", "fk_users_id", "fk_exercises_id" e il resto nello $values
da modificare.
Non ho idea di come implementarlo. Pls aiuto ...
Eloquent non può inserire/aggiornare più righe, è necessario elaborarle una alla volta. Il metodo 'insert' è in effetti' Query \ Builder's e non usa affatto caratteristiche Eloquent (ad esempio timestamp e così via). –
c'è un altro modo in 'Eloquent' o' Query \ Builder' che potrei creare una voce o un aggiornamento se la presenza dei dati è @JarekTkaczyk.Perché ho bisogno di aggiornareOrCreare quasi 20-50 dati è una buona pratica farlo uno per uno ?? – Ronser
Buone pratiche in che modo? Puoi scrivere 3 linee di codice e lasciare che Eloquent faccia il lavoro, o dire 13 linee di codice, dove fai il lavoro. Eloquent ha il metodo 'firstOrNew', che è la strada da percorrere. –