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')
Другие вопросы по тегам