Mel*_*aye 11 php laravel-5 laravel-5.5
我正在使用laravel 5.5来更新条目.问题是在更改主键'id'之后,这是一个默认的默认pk为'project_id'.添加项目工作正常,但更新项目不能正常工作.这是我得到的错误.
方法保存不存在.
这是我的模特.
<?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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器功能.
public function editProject($id){
$project = Project::where('project_id', $id)->firstOrFail();
$data = ["project_info" => $project];
return view('projects.edit')->with($data);
}
public function updateProject(Request $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();
$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');
}
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*mes 26
使用get()返回集合.尽管您传递的是"唯一"ID,但project_id它仍然会返回一个集合 - 该集合中只有一个元素.
随后,您的代码将无法按照您的经验运行,或者至少在没有进行一些更改的情况下才能$project引用集合中的第一个元素.
这是一个快速修复,只需改变这个:
$project = Project::where("project_id", $request->input('project_id'))->get();
Run Code Online (Sandbox Code Playgroud)
对此:
$project = Project::where("project_id", $request->input('project_id'))->first();
Run Code Online (Sandbox Code Playgroud)
通过使用first(),eloquent将返回与查询匹配的第一个元素并实际返回元素(而不是具有一个元素的集合),因此您可以直接编辑并保存它.
| 归档时间: |
|
| 查看次数: |
20326 次 |
| 最近记录: |