php - 使用 Laravel Eloquent 使用复合键更新表
问题描述
我严重卡在带有复合键的表中。我正在尝试使用 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 提供的资源控制器执行更新功能:我的代码如下所示:
/**
* 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');
}
另外,请指导我如何使用带有主键的资源控制器,因为它会为一些参数抛出错误?请帮我。我真的很累阅读了很多在线文章但无法解决问题。
解决方案
正如我所见,您找到的解决方案代码仅用于更新,而不是用于查找。Laravel 在迁移中支持复合键,但在 eloquent 中不支持。
也许更好,使用这样的简单解决方案,不要浪费时间:
CoursesMarksScheme::where(['clo_id' => $clo_id, 'sem_course_id' => $sem_course_id])
->update($request);
我想必要的字段在 CoursesMarksScheme 模型中的 $fillable 变量中。
推荐阅读
- android - mesibo 是否支持 Android 和 iOS sdks 中的群呼?
- javascript - 如何在javascript中复制对象的所有属性和方法?
- javascript - 如何计算调色板中所选颜色的颜色?
- javascript - 为什么我不能重定向到具有弹簧安全性的页面?
- python - 如何在文本文件中的某个字符串之后添加一个空行?
- ionic-framework - 使用 Visual Studio 代码在 Mac 上运行 ng e2e 时出现此错误
- reactjs - 对除所选元素之外的所有元素做出反应更改状态
- ruby-on-rails - Ruby on Rails 固定装置不加载关系
- fluid-framework - 如何使用 inMemory 运行 Tinylicious:false?
- javascript - Jquery多图像预览删除不起作用