我可以将 'id' 列添加为可填写的吗?

Can I add 'id' column as fillable?

我想在用户 table 中投放广告 'id'。用户 table 纯粹来自 laravel 自身。在 User.php 模型中有这些语法

protected $fillable = ['name','email',password']

我可以在 $fillable 语法中添加 'id' 列吗?

我可以填充 'id' 列而不将列名添加到 $fillable 数组吗?

刚看到这个问题。也许我没有理解正确,但我看到你以不同的形式重复了一条评论:

My purpose is to make unique number as id value

这是默认情况下“自动增量”主索引为您所做的。它是独一无二的,因为它被定义为主要的并且它是自动递增的,所以你得到一个在 table.

中分配一行的单个数值

建议 1

不确定你为什么要自己重新实现已经为你实现的东西,让你的生活变得艰难。

当您使用带 --create 参数的 artisan 命令定义 table 迁移时,Laravel 会生成一个 table 迁移,其中包含以下行:

$table->increments('id');

这意味着它在您的 table 中创建一个名称为 'id' 的列,这对您来说是主要的和自动增加的。

建议 2

不过,如果你真的想自己动手。当然可以。

fillable 数组仅用于 'mass assignment'。因此,如果您想在 table 中插入其他值的同时插入 id,例如:

$request['id'] = 123; //my unique number
User::create($request->all());

其中 $request 显然是 Request facade 的一个实例。那么是的,您需要将 id 放入可填充数组中。

建议 3

但是,如果您只想单独更改现有模型的 ID,即使不将其放入 fillable 数组中也可以这样做,例如:

$user = User::where('email', $email)->first();
$user->id = 123; // my unique number
$user->save();

希望对你有帮助