Laravel Eloquent - Как группировать условия - PullRequest
0 голосов
/ 25 апреля 2018

Я использую следующее красноречивое утверждение

Title::where('word', 'lovers')->orWhere('word', 'lover')->where('domain', $resultFromFirstKeyword->domain)->get();

То, что я вижу через регистратор SQL, выдает следующий SQL

select * from `title` where `word` = 'lovers' or `word` = 'lover' and `domain` = 'www.texasbirdlovers.com'

Однако SQL, который я хотел бы создать, -

select * from `title` where (`word` = 'lovers' or `word` = 'lover') and `domain` = 'www.texasbirdlovers.com'

Как бы мне этого добиться?

Ответы [ 4 ]

0 голосов
/ 25 апреля 2018

Попробуйте следующее:

Title::where(function( $query ) {
     $query->where( 'word', 'lover' )
     ->orWhere( 'word', 'lovers' )
})->
->where( 'domain', $resultFromFirstKeyword->domain )
->get();
0 голосов
/ 25 апреля 2018

Это должно работать:

Title::whereIn('word', ['lovers', 'lover'])
    ->where('domain', $resultFromFirstKeyword->domain)
    ->get();

Если, однако, вы хотите объединить их в точности так, как вы сказали, попробуйте это:

Title::where(function($query) {
        $query->where('word', 'lovers')
            ->orWhere('word', 'lover');
    })
    ->where('domain', $resultFromFirstKeyword->domain)
    ->get();
0 голосов
/ 25 апреля 2018

Попробуйте

Title::->where('domain', $resultFromFirstKeyword->domain)
    ->where(function($query)
        {
            $query->where('word','=',lovers)
            ->orWhere('word','=','word');
        })->get();
0 голосов
/ 25 апреля 2018

Просто group ваш запрос в where предложении

Title::where(function($q){
         $q->where('word', 'lovers')->orWhere('word', 'lover');
 })->where('domain', $resultFromFirstKeyword->domain)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...