У меня есть следующая модель в Laravel Eloquent
:
<?php
namespace Sac\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class PatientsDevices extends Eloquent
{
...
public static function getDevicesByDateTime()
{
$currrentDateTime = (new \DateTime('now', new \DateTimeZone('America/Costa_Rica')))->format('Y-m-d H:i:s');
return self::where('monitor', '=', 1)
->whereBetween($currrentDateTime, ['start_date_time', 'end_date_time'])
->get();
}
...
}
С этим я пытаюсь построить следующее предложение SQL:
SELECT *
FROM `patients_devices`
WHERE
(
`monitor` = 1 AND
'2019-03-23 13:11:48' BETWEEN `start_date_time` AND `end_date_time`
)
Но вместо сборки Eloquent:
SELECT *
FROM `patients_devices`
WHERE
(
`monitor` = 1 AND
`2019-03-23 13:11:48` BETWEEN `start_date_time` AND `end_date_time`
)
Небольшая разница заключается в том, что (') и (`) (обратная кавычка / обратная кавычка) в условии where, поскольку первое распознается как строка, а второе - как буквальное имя столбца.
В моей модели у меня есть общедоступный метод, который получает сбор данных с этими условиями: значение монитора равно 1, а между двумя столбцами даты и времени (начало и конец) существует отметка времени.
Моя проблема: я вынужден использовать модели, и я вижу, что использую метод whereBetween
, распознаю $currrentDateTime
как столбец, когда должен распознавать как значение, так как в SQL я могу использовать столбцы и значения позиций на пункт, где без ограничений.
Это Eloquent
ограничение? или я неправильно развиваю логику SQL?. Я могу решить это по-другому, используя модели?