MINUS OPERACIÓN EN ELOQUENTE ORM
Pregunta
¿Hay alguna operación menos equivalente de SQL usando elocent ORM?
por ejemplo
$ Model1= Modelo :: Donde ('Algunas restricciones aplicadas') $ Model2= Modelo :: Dónde ('Algunas restricciones aplicadas')
Quiero obtener todos los modelos que existen en $ Model1 pero no en $ Model2
Solución
La respuesta de Seblaje se ve bien, aunque ejecutará 3 consultas.Otra opción es el método DIFT () del objeto de recolección:
$result = $model1->diff($model2);
Esto funciona después de obtener datos de la DB con 2 consultas, pero complete el conjunto de datos (a menos que haya más dependiendo de sus 'restricciones aplicadas').
Otros consejos
La forma más fácil que veo es:
//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();
Este no es un código probado, lea más sobre las consultas elocuentes aquí
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow