我想加入三张桌子。这是服务器中的数据库模型:
lecturers
id - integer (PK)
......
examination
id - integer (PK)
.....
exam_supervision
lecturer_id - integer (FK)
exam_id- integer (FK)
我在laravel中实现的模型关系。
```
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Examsupervision extends Model {
public $timestamps = false;
protected $table = 'exam_supervision';
protected $fillable = ['lecturer_id', 'exam_id'];
}
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Examination extends Model {
public $timestamps = false;
protected $table = 'examination';
protected $fillable = ['name', 'module_id', 'startdate', 'enddate', 'duration', 'type', 'code', 'status'];
}
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Lecturers extends Model {
public $timestamps = false;
protected $table = 'lecturers';
protected $fillable = ['user_id', 'address', 'phone'];
}
```
讲师,考试和考试监督,即M:M。我想要的是找到讲师的所有考试。
我的代码
public function lecturerViewExaminations($id)
{
what code to get all exam for a lecturer..say ID 129
}
归我空集。我究竟做错了什么?它在SQL语法中很容易,但在laravel中我发现它非常令人困惑
答案 0 :(得分:2)
我从你的问题中理解的是:
你有一个模特(Examsupervision),想要关系考试和讲座
首先创建一个model。在这种情况下,您的模型名称将类似于Examsupervision。 在您的模型(Examsupervision)中,您可以定义您的关系。在这种情况下考试和lextures
为每个关系创建一个新模型。所以你将有3个模型(Examsupervision,Examinations,Lectures)。
现在,在您的模型中,Examsupervision会创建一个新的关系函数。
public function lectures()
{
return $this->hasMany('App\Lectures');
}
public function examinations(){
return $this->hasMany('App\Examinations');
}
在您的数据库表&#34;讲座&#34;和&#34;考试&#34;创建名为examsupervision_id
的新密钥。此密钥将是Examsupervision行的ID。
现在,在您希望获得给定Examsupervision的所有讲座的代码中,您可以执行此操作。
$examsupervision = Examsupervision::find($id); //$id = the Examsupervision you want to retrieve
$lectures = $examsupervision->lectures; //This will return all the lectures connected to examsupervision
对于考试,你也可以这样做:
$examsupervision = Examsupervision::find($id); //$id = the Examsupervision you want to retrieve
$examinations = $examsupervision->examinations;
希望这有帮助
答案 1 :(得分:1)
在最后一个位置之后,你遗失了->get()
。
$examinations= Examsupervision::with('lecturers', 'examinations')->where('lecturer_id', 'id')->where('exam_id', 'id')->get();
答案 2 :(得分:0)
Model::with()
用于关系,仅使用->get()
$examinations=Examsupervision::with('lecturers', 'examinations')->get();
您已经拥有lecturers
和examinations
的关系。
如果不起作用,请分享模型Examsupervision