Я пытаюсь проверить, не превышает ли разница двух столбцов в моей базе данных указанное количество лет, то есть DATETIME - BIRTHDATE <лет </p>
Я пытался;
$result->where(date_diff((strtotime('datetime')-strtotime('student.birth'), '<', $request->search);
Тем не менее, я получаю сообщение об ошибке, сообщающее, что
return type of strtotime is a boolean
Теперь у меня заканчиваются идеи. Любая помощь будет оценена.
Редактировать: для уточнения: Значение.php:
public function student()
{
return $this->belongsTo(\App\Student::class);
}
и Student.php
public function values()
{
return $this->hasMany(\App\Value::class);
}
Втаблица студентов, которую я сохранил:
$table->DateTime('birth');
В таблице значений это:
$table->DateTime('datetime');
$table->unsignedBigInteger('student_id');
$table->foreign('student_id')->references('id')->on('students');
2-е редактирование:
Благодаря @motia, я отредактировал свойкод:
$age = $search->age;
Это считывает возраст из запроса, работает отлично ... но затем ..:
$result = Value::query()
->whereHas('student', function($q) use($age) {
$q->whereRaw(
'TIMESTAMPDIFF(YEAR, students.birth, values.datetime) < ?', [$age]
);
})
->get();
выдает ошибку, заявляющую:
SQLSTATE [HY000]: общая ошибка: 1 нет такой функции: TIMESTAMPDIFF (SQL: выберите * из «значений», где существует (выберите * из «студентов», где «значения». «Student_id» = «студентов». «Id»)и TIMESTAMPDIFF (YEAR, Students.birth, datetime) <19)) </p>
(19 - пример моего значения для возраста)