gpt4 book ai didi

php - Laravel 5.x 如何创建具有外键约束的新用户?

转载 作者:行者123 更新时间:2023-11-29 12:06:45 25 4
gpt4 key购买 nike

我可以使用以下方法创建新用户:

User::create([
'username' => $data[ 'username' ],
'email' => $data[ 'email' ],
'first_name' => $data[ 'first_name' ],
'last_name' => $data[ 'last_name' ],
'password' => bcrypt($data[ 'password' ]),
]);

但是现在我想创建一个现在具有region_id约束的用户,所以我认为可以通过将region_id添加到fillable中,并将其添加到用户创建中来完成:

User::create([
'region_id' => $data[ 'region_id'
'username' => $data[ 'username' ],
'email' => $data[ 'email' ],
'first_name' => $data[ 'first_name' ],
'last_name' => $data[ 'last_name' ],
'password' => bcrypt($data[ 'password' ]),
]);

在我的迁移中我添加了:

$table->integer('region_id')->unsigned();

$table->foreign('region_id')
->references('id')
->on('regions');

并通过分配region_id使用工厂为其播种,但注册现在在应用程序中失败并抛出:

Undefined index: region_id

我再次查看了文档,发现我可以在该字段的迁移中添加索引,但经过更多阅读后,似乎 MySQL 实际上可能会自动为外键建立索引。

最佳答案

  1. 验证 $data 数组是否包含 region_id
  2. 不要在可填写字段中添加 region_id,而是这样做:

    $region = Region::find($data['region_id']);

    $region->users()->create([
    'username' => $data['username'],
    'email' => $data['email'],
    'first_name' => $data['first_name'],
    'last_name' => $data['last_name'],
    'password' => bcrypt($data['password']),
    ]);

    这将自动在用户对象中添加 region_id 字段。

Note: Make sure you have region hasMany users relationship in region model.

关于php - Laravel 5.x 如何创建具有外键约束的新用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31350652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com