0

我在数据库中有一个程序列表。每个程序都有一个organization_id程序所属的,加上一个start_dateend_date

我的问题是,如果给出了两个日期并且我必须获取在特定组织的日期之间开始或在日期之间结束的所有程序,那么查询应该是什么样子。以下查询返回组织范围之外的所有程序(不属于组织)。

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

为什么不使用雄辩的模型呢?Laravel 有这么好的数据模型系统。您可以通过以下方式轻松地做您想做的事情:

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 回答