Domanda

Esiste un'operazione meno equivalente da SQL usando Eloquent Orm?

Ad esempio

$ modello1= Modello :: dove ('alcuni vincoli applicati') $ Model2= Modello :: dove ('alcuni vincoli applicati')

Voglio ottenere tutti i modelli che esistono in $ Model1 ma non in $ Model2

È stato utile?

Soluzione

La risposta di Seblaze sembra buona, anche se eseguirà 3 query.Un'altra opzione è DIFF () Metodo dell'oggetto di raccolta:

$result = $model1->diff($model2);
.

funziona dopo aver recupero dei dati dal DB con 2 query, ma completa set di dati (a meno che non ci siano più dipendenti dai tuoi "vincoli applicati").

Altri suggerimenti

Il modo più semplice che vedo è:

//Get the id's of first model as array
$ids1 = $model1->lists('id');

//get the id's of second models as array
$ids2 = $model2->lists('id');

//get the models
$models = Model::whereIn('id',$ids1)->whereNotIn('id',$ids2)->get();
.

Questo non è il codice testato, per favore, saperne di più su eloquenti query qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top