如何在Laravel中查询中间关系

时间:2017-05-23 07:51:19

标签: php laravel laravel-5 orm laravel-5.4

我想在我拥有的tblSchedule tblUserHomeCourttblHomeCourt

三个表格上建立关系查询

他们有以下结构

tblSchedules
->scheduleId
->userHomeCourtId
->timeFrom
->timeTo
->duration

tblUserHomeCourts
->userHomeCourtId
->userId
->homeCourtId

tblHomeCourts
->homeCourtId
->homeCourtName
->lat
->long and other details

现在,schedule将存储用户的日程安排,而userHomeCourts将存储当前活动的homeCourt,homeCourt将提供可用的homecourts列表。

如何为用户获取这些详细信息?

在我的日程安排模型中,我尝试了hasManyThrough,但它给了我一组空的日程安排

public function schedule() {

    return $this->hasManyThrough(HomeCourt::class,UserHomeCourt::class, 'homeCourtId', 'homeCourtId','scheduleId');
}

2 个答案:

答案 0 :(得分:0)

试试这个,在Schedule.php雄辩的模型类中,

public function schedule(){
    return $this->hasMany(UserHomeCourt::class,'userHomeCourtId')->with('user_information')->with('home_courts');

}

在UserHomeCourt.php模型类

public function user_information(){
    return $this->belongsTo(User::class,'userId');
}
public function home_courts(){
    return $this->belongsTo(HomeCourt::class,'homeCourtId');
}

希望它有所帮助!

答案 1 :(得分:0)

您可以尝试使用此代码,我通常使用此方法建立关系

DB::table('tblSchedules')->join('tblUserHomeCourts', 'tblSchedules.userHomeCourtId', '=', 'tblUserHomeCourts.userHomeCourtId')
                        ->join('tblHomeCourts', 'tblUserHomeCourts.homeCourtId', '=', 'tblHomeCourts.homeCourtId')
                        ->get();