0

データベースにプログラムのリストがあります。各プログラムには、organization_idそのプログラムが属する と および がstart_dateありend_dateます。

私の質問は、2 つの日付が指定され、特定の組織の日付間で開始または日付間で終了するすべてのプログラムを取得する必要がある場合、クエリはどのように見えるかということです。次のクエリは、組織の範囲を超えている (組織に属していない) すべてのプログラムを返します。

<?php

DB::table('programs')
    ->where('organization_id', $organizationidlist[0])
    ->whereBetween('start_date', array($start_date, $end_date))
    ->orWhere(function ($query) use($start_date, $end_date, $organizationidlist) {
        $query
            ->where('organization_id', $organizationidlist[0])
            ->whereBetween('end_date', array($start_date, $end_date))
        ;
    })
    ->orderBy('created_at', 'desc')
    ->get()
;

?>
4

1 に答える 1

1

Why not do this with eloquent models? Laravel has such a nice data model system. You could easily do what you want with something like:

Organization::find($id)->projects()->where('start_date', '>', $start)->where('end_date', '<', $end)->orderBy('created_at', 'desc')->get();

http://laravel.com/docs/eloquent

于 2013-11-05T02:19:43.507 に答える