Laravel 5.7 возвращает нулевой идентификатор после сохранения ()

Когда я начал проект с использованием Ларавель 5.7 и PHP 7.3, $info->id правильно вернул последний идентификатор вставки. Теперь я сделал некоторые изменения в файле входа (все изменения здесь), а не в этих файлах, но это не работает.
gf_id в таблице — это автоматическое приращение, функция $info->id возвращает ноль.
Я попытался удалить строку «public $incrementing = false;» и установить для нее значение false, но никаких изменений нет. Я пробовал использовать другие функции, такие как $info->_id или $this->id, а также изменил $info->save на $info->create, но ничего, всегда ноль.
Если я использую получить первичный ключ, возвращаю ошибку "Вызов неопределенного метода".
В базе строка создается корректно.

Если я напечатаю объект $info с помощью dd($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? Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
2 555
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я столкнулся с чем-то подобным. Начиная с Laravel 5.7, 5.8 вы можете сделать это:

return $info->getKey();

Это работает независимо от имени первичного ключа.

Замените это:

$info = new GfTableModel();

С участием:

$info = GfTableModel::create();

Я тоже сталкиваюсь с этой проблемой. Решение:

return $info->getKey();

Этот метод полезен, когда вы не знаете имя поля первичного ключа. Этот метод получает значение первичного ключа модели. Он вернет целочисленное значение первичного ключа, которое вставляется с помощью метода $info->save();.

Другие вопросы по теме