laravel 5.5を使用してエントリを更新しています。問題は、プライマリキー 'id'を変更した後で、これはelequoentのデフォルトのpkを 'project_id'に変更したことです。アイテムを追加するとうまくいきますが、アイテムの更新が正しく機能していません。ここに私が得ているエラーがあります。Laravel 5.5プライマリキーが変更されたエントリを更新すると、メソッドの保存が存在しません
メソッドの保存が存在しません。ここで
私のモデルです。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
protected $primaryKey = 'project_id';
public function user()
{
return $this->belongsTo(User::class);
}
public function tasks()
{
return $this->hasMany(Task::class);
}
}
ここは私のコントローラ機能です。 get()
戻りcollectionを使用して
public function editProject($id){
$project = Project::where('project_id', $id)->firstOrFail();
$data = ["project_info" => $project];
//die(print_r($data));
return view('projects.edit')->with($data);
}
public function updateProject(Request $request){
//die(print_r($request));
$data = $request->all();
$validator = Validator::make($data, [
'project_title' => 'required',
'project_description' => 'required',
'project_start_date' => 'required',
'project_end_date' => 'required',
'project_status' => 'required',
]);
$response = [];
if ($validator->fails()){
$response["errors"] = [$validator->messages()->first()];
$response["success"] = false;
return json_encode($response);
}
else{
$project = Project::where("project_id", $request->input('project_id'))->get();
//die(print_r($project));
//$project->id = $request->project_id;
$project->project_title = $request->project_title;
$project->user_id = Session::get('user_id');
$project->project_description = $request->project_description;
$project->project_start_date = $request->project_start_date;
$project->project_end_date = $request->project_end_date;
$project->project_status = $request->project_status;
$project->save();
return redirect('/listProjects');
}
}