当前位置: 首页 > 知识库问答 >
问题:

我想在users表中插入一个ForeignKey,但在Laravel 8中,它以null形式插入

姚阳德
2023-03-14

我添加了一个foreignKey列来指定用户的角色。这是users表:在我将nullable()添加到role_id列之前,他们被告知role_id列没有默认值,当我添加nullable()时,他们将NULL值插入表中

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('phone_number')->unique();
    $table->string('email')->unique()->nullable();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->integer('role_id')->unsigned()->nullable();
    $table->rememberToken();
    $table->timestamps();
    $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
});

这是角色表:

Schema::create('roles', function (Blueprint $table) {
    $table->increments('id');
    $table->string('type');
    $table->timestamps();
});

这是角色列的刀片代码:我在刀片代码中添加了一个数组,以在选项标记中显示其内容,属性名称为“role_id”

@php
    $role_array = ['employee', 'client'];
@endphp

<div class="form-group row">
    <label for="role" class="col-md-4 col-form-label text-md-right">Role <span class="text-danger">*</span></label>
    <div class="col-md-6">
        <select id="role" name="role_id" class=" form-control">
            <option selected>Choose...</option>
            @foreach ($role_array as $x => $x_value)
                 <option value="{{++$x}}">{{$x_value}}</option>
            @endforeach
        </select>
    </div>
</div>

这是“CreateNewUser.php”文件的创建方法:

    public function create(array $input)
    {
        Validator::make($input, [
            'name' => ['required', 'string', 'max:255'],
            'email' => [
                'string',
                'email',
                'max:255',
                Rule::unique(User::class),
            ],
            'phone_number' => [
                'required',
                'string',
                'min:10',
                'max:13',
                Rule::unique(User::class),
            ],
            'role_id' => [
                'required',
                Rule::unique(User::class),
            ],
            'password' => $this->passwordRules(),

        ])->validate();

        return User::create([
            'name' => $input['name'],
            'email' => $input['email'],
            'phone_number' => $input['phone_number'],
            'password' => Hash::make($input['password']),
        ]);
    }

这是用户模型:

   protected $fillable = [
        'name',
        'password',
        'phone_number',
        'email',
        'role_id',
    ];

共有1个答案

徐卓
2023-03-14

你必须通过role_id来创建方法

   return User::create([
            'name' => $input['name'],
            'email' => $input['email'],
            'phone_number' => $input['phone_number'],
            'password' => Hash::make($input['password']),
            'role_id' => $input['role_id'],
        ]);

也适用于控制器中的角色

$role_array=Role::pluck('type','id');

然后在视图中

<select id="role" name="role_id" class=" form-control">
            <option selected>Choose...</option>
            @foreach ($role_array as $x => $x_value)
                 <option value="{{$x}}">{{$x_value}}</option>
            @endforeach
        </select>
 类似资料:
  • 问题内容: 我可以在非null字段中插入一个空字符串吗? 问题答案: 是的,您可以… NULL值的概念是SQL新手经常感到困惑的原因,他们经常认为NULL与空字符串’‘相同,或者值为零。 不是这种情况。从概念上讲,NULL表示“缺少未知值”,并且与其他值的处理方式有所不同。例如,要测试NULL,不能在大多数DBMS中使用算术比较运算符,例如=,<或<>。

  • 问题内容: 假设我有两个表,并且 我想在一个查询中将来自某些输入的数据插入到表中,该怎么做? 请,如果可以做到,请解释语法。 问题答案: MySQL不支持在单个INSERT语句中进行多表插入。奇怪的是,Oracle是我所知道的唯一一个…

  • 我正在讨论的活动必须将一个由CardViews填充的RecyclerView显示为项目。我的目标是在每个CardView中显示一个RecyclerView。 下面是我的活动的基本XML: 下面是我的CardView的RecolyerView的布局: 我该如何解决这个问题?拜托,我没主意了。

  • null 作者(PK) AuthorName Pubid(PK) pubName 书籍ID(FK) authorid null null 我应该只获得一行查询以获得以上结果。我写的是: 但相反,我得到了许多具有重复数据的行。

  • 您好,我试图从另一个表中为我的表在最后一列中插入值,但出现错误错误: 列“name”中的空值违反了非空约束详细信息:失败的行包含(ddf1Caf0-26c2-49e1-8a73-64227eae1f50, null, null, null, null, null,2532)。

  • 使用flyway-core:4.1.2进行数据库迁移。 添加了一个新的DDL文件供flyway执行。Flyway会正确执行DDL并对表和列进行相应的更改。(我们在新的DDL中添加了一个表并更改了以前的一些列)。 但是,flyway无法将此尝试注册到schema_version表:我得到以下错误: 架构[dbo]的当前版本:2.1 无法在元数据表[dbo]中插入版本“3.0”的行。[schema_v