【问题标题】:Can I add 'id' column as fillable?我可以将“id”列添加为可填充的吗?
【发布时间】:2019-07-05 05:55:29
【问题描述】:

我想要用户表中的广告“id”。用户表是纯来自 laravel 的。在 User.php 模型中有这些语法

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

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

我可以在不将列名添加到 $fillable 数组的情况下填充“id”列吗?

【问题讨论】:

  • 不建议将主键设为可填充,因为它是定义索引或唯一标识的值
  • 如果你有另一个主键是的,你可以。
  • 是您的users 表没有id 列吗?
  • 它有id 列。我的目的是将唯一编号设为id
  • 是的,您可以使其可填充,您可以更改它而不使其可填充。为什么你想让它可以填充呢?你能解释一下你的情况吗?

标签: laravel laravel-5 eloquent laravel-5.6


【解决方案1】:

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

我的目的是使唯一的数字作为 id 值

这是默认情况下“自动增量”主索引为您所做的。它是独一无二的,因为它被定义为主要的并且它是自动递增的,因此您可以获得一个分配给表中一行的单个数值。

建议一

不知道你为什么要通过自己重新实现已经为你实现的东西来让你的生活变得艰难。

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

$table->increments('id');

这意味着它会在您的表中创建一个名为“id”的列,该列对您来说是 PRIMARY 和 AUTOINCREMENTED。

建议二

但是,如果你真的想自己做的话。当然可以。

fillable 数组仅用于“质量分配”。所以如果你想在表中插入其他值的同时插入id,比如像这样:

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

$request 显然是 Request 门面的一个实例。然后是的,您需要将 id 放入可填充数组中。

建议三

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

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2013-01-15
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2022-07-12
    • 2018-11-04
    相关资源
    最近更新 更多