【发布时间】:2020-01-18 06:55:23
【问题描述】:
我必须在这些表之间创建一个关系:
如您所见,我需要关联 4 个表来创建四元关系,假设数据库模型没问题,我该如何使用 eloquent 来建立关系?
在模型中主题
public function curs_academic(){ // as academic year
return $this->belongsToMany('App\Curs_academic', 'assignatura_alumne_curs_professor', 'id_assignatura', 'id_curs_academic');
}
public function user(){ //as teacher
return $this->belongsToMany('App\User', 'assignatura_alumne_curs_professor', 'id_assignatura', 'id_usuari');
}
学生失踪了,因为我连三元都做不到..
当我保存时,我会这样做:
public function update(Request $request, $id)
{
$this->validate($request,[
'nom'=> 'required',
]);
$assignatura = Assignatura::find($id);
$assignatura->nom = $request->input('nom');
$assignatura->save();
$assignatura->estudi()->associate($request->estudis);
$assignatura->curs_academic()->sync($request->curs_academic,false);
$assignatura->user()->sync($request->professors,false);
$assignatura->save();
return redirect('/assignatures')->with('success','Assignatura modificada');
}
pd:数据库模型可以改变,我试图撤消四元关系,但没有它就没有意义(对我来说)。
表单输入:
<div class="form-group col-lg-6">
{!! Form::label('curs_academic', 'Curs academic') !!}
{!! Form::select('curs_academic[]', $cursos_academics, $assignatura->curs_academic()->pluck('curs_academics.id'), ['id' => 'curs_academic','multiple' => 'multiple', 'class' => 'selectpicker', 'data-live-search' => 'true']) !!}
</div>
<div class="form-group col-lg-6">
{!! Form::label('professor', 'Professor') !!}
{!! Form::select('professors[]', $professors, $assignatura->user()->pluck('users.id'), ['id' => 'professors','multiple' => 'multiple', 'class' => 'selectpicker', 'data-live-search' => 'true']) !!}
</div>
目标表:
主题 - 学生 - 年份 - 教师。 数学 - 伊万 - 2019 - 大卫。 // 数学 - 伊万 - 2018 - 大卫。
【问题讨论】:
-
您的问题到底是什么?如果您为每个关系创建单独的模型,我看不出有什么问题?
-
@Olivenbaum 嗯,我不知道要同步数据,它是链式同步的,这会在数据库中创建重复值
-
$request->estudis和$request->curs_academic和$request->professors的值是多少? -
所有 3 个都是 id 数组。 $request->estudis (mean subject) [1,2,3] -> 3 个科目的 id,与其他科目相同。 $request->curs_academic(平均学年)$request->professors(平均教师)
-
数组的内容是什么?请提供表单中的示例输入。
标签: php sql laravel eloquent laravel-6