我在数据库中有一个程序列表。每个计划都有一个该计划所属的 organization_id
,以及 start_date
和 end_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()
;
?>
最佳答案
为什么不用 Eloquent 模型来做到这一点? Laravel 有一个非常好的数据模型系统。您可以轻松地做您想做的事情,例如:
Organization::find($id)->projects()->where('start_date', '>', $start)->where('end_date', '<', $end)->orderBy('created_at', 'desc')->get();
关于php - 以下场景的流畅查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777697/