【发布时间】:2015-11-20 06:17:47
【问题描述】:
我有这些表:Professor、Turma 和 Discipline。 (Turma = 阶级)。
我有另一个名为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>
我手动构建了一个查询,我真正需要的是这样的(我真的不知道如何指定如下查询中的连接):
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 的模型并从这个模型中进行连接??
如何指定联接?
【问题讨论】:
标签: php join laravel-5 eloquent