【问题标题】:Laravel 5 Eloquent getting records from related tablesLaravel 5 Eloquent 从相关表中获取记录
【发布时间】:2016-02-09 10:54:51
【问题描述】:

我是 laravel 新手,我正在使用 Laravel 5.2 我想在特定请求的预订列中记录最长结束日期。我的桌子是这样的:

request
-----------
id | name
----------
1   | My request

bookings
-----------
id | request_id | start_date | end_date
--------------------------------------------
1   | 1         | 2016-03-01 | 2016-03-05
2   | 1         | 2016-03-10 | 2016-03-20
3   | 1         | 2016-03-25 | 2016-03-28

Request Model
------------------
public function bookings()
{
    return $this->hasMany( 'App\Booking' );
}

我希望获得具有最长结束日期的请求数据(对于上面的示例,记录将是 booking Id : 3 )。请帮忙。

我尝试了以下方法:

$request = \DB::table( 'requests' )
                ->join( 'bookings', 'requests.id', '=', 'bookings.request_id' )
                ->where( 'requests.id', 1 )
                ->max( 'bookings.end_date' );

但我想知道如何用 eloquent 做到这一点。

【问题讨论】:

    标签: php laravel-5


    【解决方案1】:

    您可以按该日期进行降序并选择第一条记录:

    $request = Request::find(1)->bookings()->orderBy('end_date', 'DESC')->first();

    【讨论】:

    • 表格中的预订可以是任意顺序。例如:1 | 1 | 2016-03-01 | 2016-03-05 2 | 1 | 2016-03-25 | 2016-03-25 3 | 1 | 2016-03-10 | 2016-03-20
    • @Pranab 我不明白这个问题,如果你设置一个ORDER BY end_date 子句,无论他们的进入顺序如何,它们都会被排序。上面的功能对你有用吗?
    • 啊……是的,它正在工作。抱歉,我一开始没有得到您的答案,但现在清楚了。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2022-11-17
    • 2019-02-21
    相关资源
    最近更新 更多