Php 使用修改的主键更新条目时,Laravel 5.5方法保存不存在

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

我正在使用laravel 5.5更新条目。问题是将主键“id”更改为“project_id”后出现的,主键是elequent默认主键。添加项目可以正常工作,但更新项目无法正常工作。这是我得到的错误

方法save不存在

这是我的模型

<?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();