Php 使用修改的主键更新条目时,Laravel 5.5方法保存不存在
我正在使用laravel 5.5更新条目。问题是将主键“id”更改为“project_id”后出现的,主键是elequent默认主键。添加项目可以正常工作,但更新项目无法正常工作。这是我得到的错误 方法save不存在 这是我的模型Php 使用修改的主键更新条目时,Laravel 5.5方法保存不存在,php,laravel-5,laravel-5.5,Php,Laravel 5,Laravel 5.5,我正在使用laravel 5.5更新条目。问题是将主键“id”更改为“project_id”后出现的,主键是elequent默认主键。添加项目可以正常工作,但更新项目无法正常工作。这是我得到的错误 方法save不存在 这是我的模型 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Project extends Model { protected $primaryKey = 'project_i
<?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()。尽管您正在传递一个“唯一”ID,即项目ID
,但它仍然会返回一个集合-集合中只有一个元素
随后,您的代码将无法像您所经历的那样工作,或者至少在不进行一些更改的情况下,$project
将引用集合中的第一个元素
不过这是一个快速解决方案,只需更改以下内容:
$project = Project::where("project_id", $request->input('project_id'))->get();
为此:
$project = Project::where("project_id", $request->input('project_id'))->first();
$project = Project::where("project_id", $request->input('project_id'))->first();
通过使用first()
$project_id = $request->input('project_id');
$project = Project::find($project_id);
$project->save();
您可以使用id找到它
Project::find($id)代码>
或者得到第一个元素,就像詹姆斯说的:
$project = Project::where("project_id", $request->input('project_id'))->first();