PHP Laravel - MS SQL - Где между и где - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь выбрать записи из моей базы данных MS SQL со следующими параметрами:

  • Столбец first_etd должен находиться между двумя датами
  • Столбец car_id должен не совпадать с текущей переменной $carId.

Это мой код:

$carId = 47;
$from = Carbon::now()->subWeeks(2)->startOfWeek()->toDateString();
$to = Carbon::now()->addWeeks(4)->endOfWeek()->toDateString();

$consols = Consol::with(['car'])
                   ->where('car_id', '!=', $carId)
                   ->whereBetween('first_etd', [$from, $to])->get();

Указанная выше переменная $consols не возвращает результатов.

Если я удалю ->where('car_id', '!=', $carId) из оператора, я успешно получу результаты.

Все записи в моей базе данных в настоящее время имеют NULL в столбце car_id:

Я также безуспешно пытался изменить оператор != на <>.

1 Ответ

0 голосов
/ 06 мая 2020

Так что это не исправление самого оператора SQL, а скорее исправление моей проблемы.

Как сказано в моем OP, я могу найти две записи, если удалю метод where(). Я решил, что могу начать с получения записей, которые находятся между двумя моими датами, а затем выполнить фильтрацию where() для коллекции результатов.

Это работает:

//Get the records from the database, that's between two dates.
$consols = Consol::with(['car'])->whereBetween('first_etd', [$from, $to])->get();

//Now $consols is a Laravel collection, so I can use the where() method here.
$consols = $this->consols->where('car_id', '!=', $carId);

Выше успешно возвращает две записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...