У меня есть следующая модель в 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 build:
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 ?. Я могу решить это другим способом, используя модели?