PHP:更新laravel中的相关id

PHP:更新laravel中的相关id,php,laravel,model,controller,updates,Php,Laravel,Model,Controller,Updates,我有两种型号: 首先是与id中的课程相关的类别: <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Catagory extends Model { use HasFactory; protected $fillable = [ 'catagor

我有两种型号: 首先是与id中的课程相关的类别:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Catagory extends Model
{
    use HasFactory;

    protected $fillable = [
        'catagory',
    ];

    public function Course()
    {
        return $this->hasMany('App\Models\Course');
    }
}
我知道这是错误的,但根据请求附带的类别名称更新类别id的正确方法是什么

我的路线:

Route::prefix('course')->group(function () {
        //Edit Courses
        Route::get('edit', [App\Http\Controllers\course\Course_controller::class,'index'])->name('edit_course');
        //Show courses to add
        Route::get('/', [App\Http\Controllers\course\Course_controller::class,'add'])->name('show_course');
        //Add Course
        Route::post('/', [App\Http\Controllers\course\Course_controller::class,'add'])->name('add_course');
        //Show Course to update
        Route::get('update/{id}', [App\Http\Controllers\course\Course_controller::class,'update'])->name('show_update_course');
        //Update Course
        Route::post('update/{id}', [App\Http\Controllers\course\Course_controller::class,'update'])->name('update_course');
        // Delete Course
        Route::get('delete/{id}', [App\Http\Controllers\course\Course_controller::class,'delete'])->name('delete_course');
    });

您没有获得类别或培训师资格。将->first()添加到这些行的末尾

我不知道为什么你要在类别和课程之间建立一对多的关系,但是如果一门课程可以有更多的类别,你应该使用多对多的关系。若课程之外的任何其他事物都可以有一个类别,那个么您需要多对多多态关系


为了遵循命名约定,最好在类别模型中使用“课程”而不是“课程”。

我认为您不需要这个
$request->ismethod('post')
,因为如果您的路由定义为
post
,那么它只接受post请求,然后,您的控制器将执行HKS亲爱的,但我有post和get in路由,我将向问题添加路由将是
$catagory=catagory::where('catagory',$request->catagory)->first()[first(),最后一个]然后您可以获得
$catagory->Course->id也适用于
$trainer=trainer::where('trainer',$request->trainer)->first()最佳方式,通过请求传递
$request->catogory\u id
,而不是
$request->catogory
[name]为什么要发送名称,你应该发送
category\u id
trainer\u id
,因为他们看重的不是id,而是它们的标题,只需首先添加()并更改$course->trainer\u id=$trainer->course->id;至$course->trainer\u id=$trainer->id;
public function update(Request $request ,$id)
        {
            $course = Course::find($id);
            
            if ($request->ismethod('post')){
                $catagory = Catagory::where('catagory' , $request->catagory);
                $trainer = Trainer::where('trainer' , $request->trainer);
   
                $course->course_name = $request->course_name;
                $course->trainer_id = $trainer->Course->id;
                $course->catagory_id = $catagory->Course->id;
                $course->price = $request->price;
                $course->video_link=$request->video_link;
                $course->image_link=$request->image_link;

                $course->save();
                return back();
            }
            else {
                $arr['course']=$course;
                return view('admin.courses.course_update',$arr);
            }
        }
Route::prefix('course')->group(function () {
        //Edit Courses
        Route::get('edit', [App\Http\Controllers\course\Course_controller::class,'index'])->name('edit_course');
        //Show courses to add
        Route::get('/', [App\Http\Controllers\course\Course_controller::class,'add'])->name('show_course');
        //Add Course
        Route::post('/', [App\Http\Controllers\course\Course_controller::class,'add'])->name('add_course');
        //Show Course to update
        Route::get('update/{id}', [App\Http\Controllers\course\Course_controller::class,'update'])->name('show_update_course');
        //Update Course
        Route::post('update/{id}', [App\Http\Controllers\course\Course_controller::class,'update'])->name('update_course');
        // Delete Course
        Route::get('delete/{id}', [App\Http\Controllers\course\Course_controller::class,'delete'])->name('delete_course');
    });