簡體   English   中英

使用 Laravel Eloquent 更新帶有復合鍵的表

[英]Update a table with composite key using 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 變量中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM