当我使用 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
可能会引起问题吗?
谢谢
答案 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();
方法插入的整数主键值。