【发布时间】:2021-11-06 22:35:03
【问题描述】:
我正在尝试将新记录 customer 插入到 MySQL 数据库中,如下所示:
$customer = Customer::create(['name'=>$request->customerName,
'email'=>$request->customerEmail,
'phone'=>$request->customerPhone,
'area_id'=>$request->customerArea,
'gender'=>$request->customerGender]);
dd($customer->id);
它适用于myISAM 存储引擎并且存在新记录,但不适用于InnoDB,发布请求返回200,数据库中没有记录。而转储dd() 返回新的ID,因为它是自动递增的。 ID 已被占用,因为当我插入一条新记录时,它会为我提供一个比以前的 ID 更新的 ID,数据库中也没有记录。
这是客户模型结构:
namespace App\Models\User;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = [
'name', 'phone', 'email', 'area_id', 'gender'
];
protected $table = 'customers';
}
这是customers 表结构:
【问题讨论】:
-
你试过用 save() 代替吗?
-
@JahStation,与 save() 相同的问题
-
我不认为 100% 相关,但 id 应该被声明为 bigint(用于迁移的 bigincrementes),我使用这种问题在数据库上运行另一个查询以获得新的 id。
-
您是否通过查询确认未插入行,以及 phpmyadmin 未显示它们的问题?
-
@levi,是的,已确认,ID 已被占用但不存在。
标签: mysql laravel innodb myisam