Laravel - несколько запросов - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь использовать несколько запросов where в базе данных sqlite, которые затем выбираются только между двумя датами ssDate и seDate. по какой-то причине я ничего не возвращаю, когда знаю, что между двумя датами есть запись.

        if($status == "newOngoingClosed"){
        //dd($status, $ssDate, $seDate);
        $selStatus = Account::where('cActive', '=', 'New')
        ->orWhere('cActive', '=', 'Ongoing')
        ->orWhere('cActive', '=', 'Closed')
        ->whereBetween ('refDate', [$ssDate, $seDate])
        ->get();
        dd($selStatus);
        return view('reports_active')->withDetails($selStatus)->withQuery($status);
    }

любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вместо нескольких orWhere вы можете использовать whereIn для получения желаемого результата:

$selStatus = Account::whereIn('cActive', ['New','Ongoing','Closed'])
        ->whereBetween ('refDate', [$ssDate, $seDate])
        ->get();
0 голосов
/ 09 мая 2018

Ваш запрос в настоящее время:

select * 
from `accounts` 
where `cActive` = ? or `cActive` = ? or `cActive` = ? and `refDate` between ? and ?

Обратите внимание, что последним условием является и AND, что означает, что он будет выбирать вещи, которые являются либо новыми, либо текущими, либо закрытыми и между этими датами

Вам нужно:

Account::where([
      ['cActive', '=', 'New','or'] , 
      [ 'cActive', '=', 'Ongoing','or' ], 
      ['cActive', '=', 'Closed','or']
 ])->whereBetween ('refDate', [Carbon::now(), Carbon::now()])->get() //Note the carbons are just date placeholders , you can use your own

Это выполнит:

select * from `accounts` where (`cActive` = ? or `cActive` = ? or `cActive` = ?) and `refDate` between ? and ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...