我有一个与属性表相连的周表,周表如下所示:-
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 的行,因为只有一周可用。
我尝试了各种方法,但要么一无所获,要么总是返回第一行、第二行和第四行。
我认为这很接近,但它仍然缺少一些东西,因为它正在寻找 <= 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' 按 PropID 分组有计数(*)= 2
最佳答案
这将使您的结果仅作为属性 1:
$weeks = Property::whereHas('Week', function ($q) {
$q->where(function ($sub) {
$sub->whereIn('WeekDate', array('2015-07-04', '2015-07-11'));
$sub->where('Available', '=', 'y');
});
$q->groupBy('property_id');
$q->having('count(*)', '=', '2');
})->get();
关于php - Laravel Eloquent,返回两个条件都为 True 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183102/