Skip to content
Advertisement

Laravel 5.7 return id null after save()

When I have started with the project using Laravel 5.7 and PHP 7.3, $info->id returned correctly the last insert id. Now, I did some changes at the login file (all changes are here) and not at this files, but it doesn’t work.
The gf_id in the table is autoincrement, the function $info->id return null.
I have tried to delete the row “public $incrementing = false;” and to set it to false but there aren’t any changes. I have tried with other function like $info->_id or $this->id and also have changed $info->save with $info->create but nothing, always null.
If I use getPrimaryKey return the error “Call to undefined method“.
In the database the row is created correctly.

If I print the object $info with dd($info);, the result is this:

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 => "*"
  ]
}

This is my GfTableModel.php:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
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;

    } 
}

Where am I doing wrong? Could it be a problem given by the command php artisan config: cache? Thank you

Advertisement

Answer

I ran into something similar. As of Laravel 5.7, 5.8 you can do this:

return $info->getKey();

This works regardless of the name of the primary key.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement