Когда я начал проект с использованием Ларавель 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?
Спасибо






Я столкнулся с чем-то подобным. Начиная с Laravel 5.7, 5.8 вы можете сделать это:
return $info->getKey();
Это работает независимо от имени первичного ключа.
Замените это:
$info = new GfTableModel();
С участием:
$info = GfTableModel::create();
Я тоже сталкиваюсь с этой проблемой. Решение:
return $info->getKey();
Этот метод полезен, когда вы не знаете имя поля первичного ключа.
Этот метод получает значение первичного ключа модели.
Он вернет целочисленное значение первичного ключа, которое вставляется с помощью метода $info->save();.