Pergunta

Existe alguma operação MINUS equivalente do SQL usando o Eloquent ORM?

Por exemplo

$ modelo1 = modelo :: where ('algumas restrições aplicadas') $ modelo2 = modelo :: onde ('algumas restrições aplicadas')

Quero obter todos os modelos que existem em $model1, mas não em $model2

Foi útil?

Solução

a resposta do seblaze parece boa, embora execute 3 consultas.Outra opção é o método diff() do objeto Collection:

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

Isso funciona depois de buscar dados do banco de dados com 2 consultas, mas com um conjunto completo de dados (a menos que haja mais, dependendo de suas 'restrições aplicadas').

Outras dicas

A maneira mais fácil de ver isso é:

//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 não é um código testado, leia mais sobre consultas eloquentes aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top