whereBetween и orWhere, чтобы получить данные в диапазоне дат - PullRequest
0 голосов
/ 11 мая 2018

Я хочу получить диапазон дат созданных_, вот мой пример таблицы

id    status  created_at
1      1      2018-05-10 10:53:54
2      2      2018-05-10 10:53:54
3      2      2018-05-9 11:53:54

в Моем контроллере

$this->to = 2018-05-10;
$this->from = 2018-05-09;
Table::whereBetween('created_at', [$this->from, $this->to]) 
                            ->orwhere('created_at', 'like', '%' .$this->to. '%')
                            ->where('status', 2); 

В этом запросе выводятся все данные, которые имеют статус 1 и 2, как.Могу ли я получить только status2

Я пытаюсь die_dump мой sql я получаю мой запрос, как это

select * from `table` where `created_at` between '2018-05-09' and '2018-05-10' or `created_at` like '%2018-05-10%' and `status` = '2'

Ответы [ 2 ]

0 голосов
/ 11 мая 2018
 Table::where(function($q) use ($from,$to)){
      $q->whereBetween('created_at', [$from, $to])
        ->orwhere('created_at', 'like', '%' .$to. '%')
    }->where('status', 2);

Вы можете искать "вложенный / подзапрос eloquent laravel" для получения дополнительной информации

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

Вы можете попробовать подзапрос для whereBetween('created_at', [$this->from, $this->to]) и ->orwhere('created_at', 'like', '%' .$this->to. '%')

$from = $this->from;
$to = $this->to;
Table::where('status', 2)
            ->where(function ($query) use ($from,$to) {
                    $query->whereBetween('created_at', [$from, $to])
                                ->orwhere('created_at', 'like', '%' .$to. '%');
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...