我有一个查询范围现在正在检索我想要的正确条目,但我也需要获取数据透视信息。例如:
我的查询是:
public function scopeProgramDate($query, $program, $date)
{
return $query->whereHas('weeks', function ($q) use( $program, $date ){
$q->where('date', $date);
$q->where('program', $program);
});
}
所以我可以像Workout::programdate( 'skunks', Carbon::today() )->first();
一样调用它,它会返回正确的workout
。但我希望它包含数据透视表(date, program, warmup
)上的条目的透视信息;
如果我这样称呼它Workout::programdate( 'skunks', Carbon::today() )->with('weeks')->first();
它会给我与锻炼相关的所有周,我不能使用,因为锻炼可以在同一天用不同的warmpup
和program
有没有办法:
public function scopeProgramDate($query, $program, $date)
{
return $query->whereHas('weeks', function ($q) use( $program, $date ){
$q->where('date', $date);
$q->where('program', $program);
})->withPivot( ['program', 'warmup', 'date'] );
}
所以我可以在workout
和week_workout
匹配的date
内找到program
。然后返回该条目的workout
,workout.pivot.date
,workout.pivot.program
,workout.pivot.warmup
?
答案 0 :(得分:0)
我最终制作了一个有效的新功能,但我认为这不是正确的方法:
public static function workoutWeek( $date, $program){
$array = array();
$skill = DB::table('week_workout')
->where('date', $date )
->where('program', $program )
->first();
$workout = Workout::find( $skill->workout_id );
$array['skill'] = $skill;
$array['workout'] = $workout;
return $array;
}
然后将其称为
$training = Workout::workoutWeek( Carbon::today(), 'training' );