雄辩的多表查询和关系

时间:2016-10-24 18:38:40

标签: laravel eloquent

我是新手,所以请耐心等待。

我有4个表(用户,分数,记分卡,课程),我需要从所有这些表中查看视图信息。

以下是关系:

评分模型

public function user(){
    return $this->belongsTo('App\User');
}

public function scorecard(){
    return $this->belongsTo('App\Scorecard');
}

public function course() {
    return $this->belongsTo('App\Course');
}

课程模式

public function club(){

    return $this->belongsTo('App\Club');

}

public function scorecard(){

    return $this->hasMany('App\Scorecard');

}

public function score() {
    return $this->hasMany('App\Score');
}

记分卡模型

public function course(){

    return $this->belongsTo('App\Course');

}

public function club(){

    return $this->belongsTo('App\Club');
}

在我的控制器中,我从请求中的下拉列表中获取分数ID。我需要基本上获得以下信息:

  1. 得分记录很容易,因为我有得分ID。
  2. 使用得分表中的记分卡_id从记分卡表中获取记分卡记录
  3. 使用记分卡表中的course_id来从课程表中获取课程信息。

2 个答案:

答案 0 :(得分:0)

如果$id是下拉列表中的得分ID,

$score=Score::with('scorecard','scorecard.course')->where(['id'=$id])->first();

然后,

print_r($score);

给出分数记录。

print_r($score->scorecard);  

给出记分卡记录。

print_r($score->scorecard->course); 

给出了课程记录。

答案 1 :(得分:0)

您可以使用点.作为scorecard.course急切加载关系,它会同时加载记分卡和课程。

$score = Score::with('scorecard.course')->find($id);

然后您可以访问相应的属性:

$score->scorecard;
$score->scorecard->course;