gpt4 book ai didi

php - 使用 Laravel Eloquent 更新具有复合键的表

转载 作者:行者123 更新时间:2023-12-04 00:07:41 25 4
gpt4 key购买 nike

我严重卡在一个有复合键的表中。我正在尝试使用 Eloquent 方式通过两个主键来过滤记录。但我开始知道 Eloquent 不支持复合键。我已经经历了很多解决方案,但没有一个解决方案足够清晰,足以让初学者理解。

一个解决方案代码说用下面的代码编辑模型类:

<?php
class CustomerAddress extends Model {
protected function setKeysForSaveQuery(Builder $query)
{
$query
->where('Customer_No', '=', $this->getAttribute('Customer_No'))
->where('Address_Name', '=', $this->getAttribute('Address_Name'));
return $query;
}

}

我想使用laravel提供的资源 Controller 来执行更新功能:我的代码如下所示:

  /**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $sem_course_id, $clo_id)
{
$id = $this->getKeyForSaveQuery();
$request->validate([

'assignments_weightage'=>'required',
'quizes_weightage'=>'required',
'project_weightage'=>'required',
'class_participation_weightage'=>'required',
'mid_weightage'=>'required',
'final_weightage'=>'required',


]);

$course = CoursesMarksScheme::find($clo_id,$sem_course_id);
$course->assignments_weightage = $request->get('assignments_weightage');
$course->quizes_weightage = $request->get('quizes_weightage');
$course->project_weightage = $request->get('project_weightage');
$course->class_participation_weightage = $request->get('class_participation_weightage');
$course->mid_weightage = $request->get('mid_weightage');
$course->final_weightage = $request->get('final_weightage');
$course->save();

return redirect('/coursesmarks');
}

此外,请指导我如何使用带有主键的资源 Controller ,因为它会为一些参数抛出错误?请帮我。网上看了很多文章,实在是太累了,还是解决不了问题。

最佳答案

正如我所见,您找到的解决方案代码仅用于更新,而不用于查找。 Laravel 支持迁移中的组合键,但不支持 Eloquent。

也许更好,使用这样简单的解决方案,不要浪费时间:

CoursesMarksScheme::where(['clo_id' => $clo_id, 'sem_course_id' => $sem_course_id])
->update($request);

我想必要的字段在 CoursesMarksScheme 模型中的 $fillable 变量中。

关于php - 使用 Laravel Eloquent 更新具有复合键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59337494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com