Laravel 5.7在save()之后返回id null

时间:2019-03-22 14:46:44

标签: php laravel

当我使用 Laravel 5.7 PHP 7.3 开始该项目时, $info->id 正确返回了最后一个插入ID。现在,我在登录文件(all changes are here)上进行了一些更改,但没有对此文件进行过更改,但这是行不通的。 表格中的 gf_id 自动增量,函数 $ info-> id返回null
我试图删除“ public $incrementing = false;”行并将其设置为false,但是没有任何更改。我尝试过使用其他功能,例如$info->_id$this->id,还用$info->save更改了$info->create,但没有任何改变,总是为空。 如果我使用 getPrimaryKey ,则返回错误“ 调用未定义的方法”。
在数据库中,该行创建正确。

如果我用dd($info);打印对象$ info,结果是这样的:

GfTableModel {#233 
  #table: "gf_table"
  #primaryKey: "gf_id"
  +timestamps: false
  +incrementing: false
  #connection: "mysql"
  #keyType: "int"
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: true
  #attributes: array:5 [
    "gf_user" => 5
    "gf_new" => 1
    "gf_data" => "2019-03-22 14:08:28"
    "gf_object" => ""
    "gf_text" => ""
  ]
  #original: array:5 [
    "gf_user" => 5
    "gf_new" => 1
    "gf_data" => "2019-03-22 14:08:28"
    "gf_object" => ""
    "gf_text" => ""
  ]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  #hidden: []
  #visible: []
  #fillable: []
  #guarded: array:1 [
    0 => "*"
  ]
}

这是我的 GfTableModel.php

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class GfTableModel extends Model
{
    protected $table = 'gf_table';
    protected $primaryKey = 'gf_id';

    public $timestamps = false;  
    public $incrementing = true;

    public function insertNewRow(){

        $info = new GfTableModel();
        $info->gf_user = auth()->id();
        $info->gf_data = date("Y-m-d H:i:s");
        $info->gf_new = 1;
        $info->gf_object = "";
        $info->gf_text = "";
        $info->save();

        return $info->id;

    } 
}

我在哪里做错了?命令php artisan config: cache可能会引起问题吗? 谢谢

4 个答案:

答案 0 :(得分:1)

我遇到了类似的情况。从Laravel 5.7、5.8开始,您可以执行以下操作:

return $info->getKey();

不管主键的名称如何,此方法都有效。

答案 1 :(得分:0)

@ryantxr解决方案:

return $info->gf_id

答案 2 :(得分:0)

替换此:

$info = new GfTableModel();

使用:

$info = GfTableModel::create();

答案 3 :(得分:0)

我也遇到了这个问题。 解决办法是:

return $info->getKey();

当您不知道主键字段的名称时,此方法很有用。 此方法获取模型主键的值。 它将返回一个使用 $info->save(); 方法插入的整数主键值。