【问题标题】:Why laravel eloquent model does not have an id after it is saved?为什么 laravel eloquent 模型保存后没有 id?
【发布时间】:2019-11-07 04:58:54
【问题描述】:

我有一个帐户模型。我通过以下方式定义并保存它:

$account = new Account();
$account->email = $request->get('email');
$account->name  = $request->get('name');
$account->save();

dd($account->id) // null

为什么帐户 ID 没有更新?我使用自动增量 id 字段。 我在数据库中看到了记录。

【问题讨论】:

  • 在我的 Laravel 安装上运行良好。您的自动增量 ID 字段是否命名为 id 或其他名称?
  • 您必须将incrementing 设置为false。否则,你只是做错了什么。
  • 在问题中包含您的迁移表类。
  • @ceejayoz 它被称为 id。 @jarek-tkaczyk 我看不到任何 incrementing=false 定义,无论是在模型中还是在迁移中。
  • @marcanuy 我只看到$table->increments('id') 定义,与迁移中的标识符有关。

标签: laravel eloquent


【解决方案1】:

您应该在模型上设置主键。

尝试将其插入您的模型:

protected $primaryKey = "id";

【讨论】:

  • 这是扩展Model时的默认值,不必显式设置。
【解决方案2】:

如果您的 Account 模型正在扩展 Pivot 而不是 Model(作为枢轴模型),则默认情况下它不使用自动递增的 id。在这种情况下,您可能有两个选择。

显式设置您的自增主键:

class Account extends Pivot {
    protected $primaryKey = "id";
    public $incrementing = true;

    // -- snip --
}

或者您可以将模型转换为扩展 Model

class Account extends Model {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2014-10-31
    • 2016-06-11
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多