我有这些表:
Professor
,Turma
和Discipline
。 (Turma = class)。
我有另一个名为professor_turma
的表,它是professor
和turma
之间的一个转轴。在此表格中,我有一些键:cod_professor
,cod_turma
,cod_discipline
。
对于professor_turma
内的每一行,我需要提供Turma
表的内容以及professor
表中教授的名称。
事情是:我只有一种关系,我不能改变它。所以我尝试使用belongsToMany
,但我无法获得所需的所有数据。使用以下代码,我可以列出所有教授的名字,但我无法得到Turma
他们的教学。
class Professor extends Model
{
protected $table = "professor";
protected $primaryKey = 'cod_professor';
public function turmas()
{
return $this->belongsToMany('App\Turma', 'professor_turma','cod_professor', 'cod_turma')->withPivot('CH','ano_semestre');
}
}
class ProfessorController extends Controller
{
public function getProfessorList()
{
$professor = \App\Professor::all();
return View::make('professor', compact('professor'));
}
}
<ul>
@foreach($professor as $prof)
<li>
<h3 data-id="{{ $prof->cod_professor }}" class="prof-name">{{ $prof->cod_professor }} - {{ $prof->nome }}
<input type="checkbox" name="" value="" class="check_prof" />
</h3>
@if(count($prof->turmas()->get()))
<ul class="list-disc">
@foreach($prof->turmas as $disc)
<li data-dia="{{ $disc->dia_semana }}" data-time="{{ $disc->hr_inicio}}" data-id="{{ $disc->cod_disciplina }}">{{ $disc->nome_disciplina }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
我mannualy构建了一个查询,我真正需要的是这样的东西(我真的不知道如何指定连接,如下面的查询中的连接):
SELECT DISTINCT professor.nome, professor_turma.cod_professor, professor_turma.cod_turma, professor_turma.cod_disciplina, turma.nome_disciplina
FROM professor_turma
INNER JOIN professor ON professor_turma.cod_professor = professor.cod_professor
INNER JOIN turma ON professor_turma.cod_turma = turma.cod_turma AND professor_turma.cod_disciplina = turma.cod_disciplina
WHERE professor_turma.cod_professor = ?
也许创建professor_turma
的模型,从这一个我加入?
我怎么能指定连接?
答案 0 :(得分:0)
您可以使用&#39;而不是使用加入关键字。用于获取相关表值的关键字。
$professor = Professor::with('turmas', 'disciplines')->find($professorId);
其中turmas和学科是教授模型中设定的关系。