我有一个Weeks表连接到属性表,Weeks表看起来像这样: -
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行。
我认为这很接近,但它仍然缺少一些东西,因为它正在寻找< = AND> =
的日期 $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有效。
SELECT PropID FROM tblweeks WHERE WeekDate
IN('2015-07-04','2015-07-11')AND Available
='yes'GROUP BY PropID HAVING COUNT(*)= 2
答案 0 :(得分:1)
这样,您的结果仅为属性1 :
if(2 != 0 && typeof(Mine) === "object" && Mine == "Mine")
答案 1 :(得分:0)
我相信你不需要第二个嵌套查询。
$query = Property::whereHas('Week', function($q) use ($arrive)
{
$q->where('WeekDate', '>=', '2015-07-04');
$q->where('WeekDate', '<=', '2015-07-11');
$q->where('Available', '=', 'Yes');
})
->get();
击> <击> 撞击>
<强>更新强>
你有没有看过whereBetween。
$query = Property::whereHas('Week', function($q) use ($arrive)
{
$q->whereBetween('WeekDate', '2015-07-04', '2015-07-11');
$q->where('Available', '=', 'Yes');
})
->get();
答案 2 :(得分:0)
我在您的查询中做了一些更改:
请检查此解决方案
$query = Property::whereHas('Week', function($q) use ($arrive)
{
$q->where('WeekDate', '=', '2015-07-04');
$q->orWhere('WeekDate', '=', '2015-07-11');
$q->where('Available', '=', 'Yes');
})
->get();
这应该有效并将返回欲望输出
答案 3 :(得分:0)
有一些更改,查询可能正在逐个查询:
请检查此解决方案
$query = Property::whereHas('Week', function($q) use ($arrive)
{
$q->where('WeekDate', '=', '2015-07-04');
$q->orWhere('WeekDate', '=', '2015-07-11');
$q->where('Available', '=', 'Yes');
$q->group('WeekDate');
})
->get();
这应该有效并将返回欲望输出
答案 4 :(得分:0)
实际上你需要两个whereHas
:
$query = Property::whereHas('Week', function($q) use ($arrive)
{
$q->where('WeekDate', '>=', '2015-07-04');
$q->where('Available', '=', 'Yes');
})
->whereHas('Week', function($q) use ($arrive)
{
$q->where('WeekDate', '<=', '2015-07-11');
$q->where('Available', '=', 'Yes');
})
->get();