PHP:更新laravel中的相关id
我有两种型号: 首先是与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
<?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');
});