Laravel 5.2 получит самую близкую дату из красноречивой коллекции
У меня есть модель Eloquent Event, которая связана с несколькими датами, как это:
$event->dates // shows Collection of 8 Eloquent date models
После этого мне нужно выбрать единственную дату, которая ближе всего к текущему времени. Я знаю, как это сделать, используя запрос необработанного SQL или класса БД. Но нет ли лучшего решения? Я не хочу прыгать в базу данных для данных, у меня уже есть.
Формат даты в красноречивых моделях на удивление строковый.
1 ответ
Решение
Вы можете использовать то, что мы называем в мутаторах Laravel, как это ->
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Event extends Model
{
public function dates()
{
return $this->hasMany('Date');
}
/**
* Get Dates for the event.
*
* @param string $value
* @return array
*/
public function getDates()
{
$dates = $this->dates()->getQuery()->orderBy('created_at', 'asc')->get();
return $dates;
}
}
Надеюсь это поможет.
ОБНОВИТЬ
Я думаю, что теперь вы также можете напрямую сделать это в определении модели следующим образом:
return $this->hasMany('Date')->orderBy('created_at', 'asc')