我有两个模型“频道”和“时间表”,其中一个频道有多个时间表(一对多)。我想要做的是获取今天包含时间表的频道,并且时间表需要按日期排序ASC,每个频道也限制10个时间表。
我编写了以下代码,但有时会返回错误的结果。我检查了它,发现laravel生成一个SQL查询,因此限制了所有通道的计划结果。我正在使用Eloquent。有谁知道怎么做?...谢谢。
$channels = $this->channels->whereHas('tvSchedules', function($q)
{
$q->where('day', date('Y-m-d', strtotime(Carbon::now()->toDateString())))
->where('end_time', '>=', Carbon::now()->toTimeString());
})->with(['tvSchedules' => function($q){
$q->where('day', date('Y-m-d', strtotime(Carbon::now()->toDateString())))
->where('end_time', '>=', Carbon::now()->toTimeString())
->with('tvScheduleImages')
->take(10)
;
}]);
SQL:
select * from `trn_tv_schedule` where `trn_tv_schedule`.`channel_id` in (1, 2) and `day` = '2015-08-31' and `end_time` >= '06:11:34' limit 10
答案 0 :(得分:0)
尝试在模型中使用雄辩的关系 像
// Channel Model
public function schedules()
{
return $this->hasMany('Schedule');
}
// Schedule Model
public function Channel()
{
return $this->belongsTo('Channel');
}
如果您使用的是laravel 5.0,那么请看一下 - Eloquent Relationships