Конструктор запросов Laravel с запросом и в запросе
Я хочу добавить предложение "И" в конец построителя запросов, код выглядит так:
$orderers = DB::table('address')->where(function($query) use ($term) {
$query->where('id', 'LIKE', '%' . $term . '%')
->or_where('name', 'LIKE', '%' . $term . '%')
->or_where('status', 'LIKE', '%' . $term . '%')
->and_clause_goes_here('is_orderer', '=', '1');
})->paginate($per_page);
Но, ища предложение И в Laravel, я не смог найти ни одного эквивалента. Не могли бы вы помочь мне с этой проблемой?
10
Author: giannis christofakis, 2013-03-08
2 answers
Решение JCS все еще может дать некоторые неожиданные результаты из-за порядка операций. Вы должны сгруппировать все операции вместе, как в SQL, явно определяя логику. Это также облегчает понимание в следующий раз, когда вы (или другой член команды) будете читать код.
SELECT * FROM foo WHERE a = 'a'
AND (
WHERE b = 'b'
OR WHERE c = 'c'
)
AND WHERE d = 'd'
Foo::where( 'a', '=', 'a' )
->where( function ( $query )
{
$query->where( 'b', '=', 'b' )
->or_where( 'c', '=', 'c' );
})
->where( 'd', '=', 'd' )
->get();
20
Author: Collin James, 2016-12-07 20:09:23
Просто другое предложение where подойдет И будет использоваться
$orderers = DB::table('address')->where(function($query) use ($term) {
$query->where('id', 'LIKE', '%' . $term . '%')
->where('is_orderer', '=', '1');
->or_where('name', 'LIKE', '%' . $term . '%')
->or_where('status', 'LIKE', '%' . $term . '%')
})->paginate($per_page);
12
Author: jcs, 2013-03-08 03:18:43