Laravel 5.2从雄辩的收集中获取最接近的日期

时间:2016-04-14 09:20:13

标签: eloquent laravel-5.2 relationships

我有Eloquent Event模型,它与多个日期相关:

$event->dates // shows Collection of 8 Eloquent date models

之后我需要选择唯一的日期,最接近当前时间的日期。我知道如何使用原始SQL或DB类的查询来执行此操作。但是没有更好的解决方案吗?我不想跳进数据库中,我已经有了。

雄辩的模型中的日期格式令人惊讶地是字符串。

1 个答案:

答案 0 :(得分:2)

您可以使用我们在laravel mutators 中调用的内容 - >

<?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')