【发布时间】:2015-07-02 11:17:05
【问题描述】:
我有一个周表,它连接到一个属性表,周表如下所示:-
PropID, WeekDate, Available
1 , 2015-07-04, Yes
1 , 2015-07-11, Yes
1 , 2015-07-18, No
2 , 2015-07-04, Yes
2 , 2015-07-11, No
2 , 2015-07-18, No
我想选择第 4 周和第 11 周都可用的属性。在上面的示例中,我想返回 PropID 1 的两行,因为两者都可用,并且 PropID 2 中没有行,因为只有一周可用。
我尝试了各种方法,但要么一无所获,要么总是返回第 1、第 2 和第 4 行。
我认为这很接近,但它仍然缺少一些东西,因为它正在寻找 =
的日期 $query = Property::whereHas('Week', function($q) use ($arrive)
{
$q->where(function($sub)
{
$sub->where('WeekDate', '>=', '2015-07-04');
$sub->where('WeekDate', '<=', '2015-07-11');
});
$q->where('Available', '=', 'Yes');
})
->get();
不确定这是否有帮助,但属性表很简单
PropID, PropName
1 , Property 1
2 , Property 2
刚刚发现这条 SQL 有效。
从 tblweeks 中选择 PropID,其中 WeekDate IN ('2015-07-04', '2015-07-11') AND Available = 'yes' GROUP BY PropID HAVING COUNT(*) = 2
【问题讨论】:
-
你能分享你的Property table的样本数据吗?想知道这是否有帮助!
-
你能贴出你的型号代码吗?
-
还假设 WeekDate 是一个日期,你能确认这是真的吗?
标签: php mysql laravel eloquent