Laravel5.5:插入已创建模型的ID以在另一个表中创建记录

时间:2018-02-25 07:44:44

标签: laravel model eloquent

我一直在尝试使用表A中创建的记录的id创建表B的记录。但由于某种原因,即使我已经转储了模型ID的值,它也始终为null&#&# 39;是的。但是当我将它分配给表B中的字段时,它不会插入它。我没有得到任何错误,并且创建了两个记录(在表A和B中),但是应该具有模型A的ID的字段的值是NULL。

我已将字段添加到模型类中的$ fillable数组中:

protected $fillable = [
        'name', 'email', 'password', 'phone', 'role', 'A_id', 
    ];

这是我试过的代码。请帮我解决这个问题。

if($data['role'] == 'admin'){

            $tableA = TableA::create([
                'name' => $data['name'],
                'phone' =>$data['phone']
            ]);
            return TableB::create([
                'A_id' => $tableA->id,
                'name' => $data['nameB'],
                'email' => $data['email'],
                'role' => $data['role'],
                'phone' => $data['phoneB'],
                'password' => bcrypt($data['password']),
            ]);
        }

以下是TableB的迁移文件

public function up()
    {
        Schema::create('tableB', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('A_id')->unsigned()->nullable();
            $table->string('phone', 10)->unique();
            $table->string('name');
            $table->string('role');
            $table->integer('address_id')->nullable();
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
            $table->softDeletes();
        });
    }

2 个答案:

答案 0 :(得分:2)

A_id添加到TableB模型中的$fillable数组中:

protected $fillable = ['A_id', ......];

答案 1 :(得分:0)

困惑了很长一段时间后。我尝试了一种不同的方式来创建模型,出于某种原因,它只是工作正常。

if($data['role'] == 'admin'){

    $tableA = TableA::create([
        'name' => $data['name'],
        'phone' =>$data['phone']
    ]);

    $tableB = new TableB();
    $tableB->A_id = $tableA->id;
    $tableB->name = $data['nameB'];
    $tableB->email = $data['email'];
    $tableB->role = $data['role'];
    $tableB->phone = $data['phoneB'];
    $tableB->password = bcrypt($data['password']);
    $tableB->save();
    return $tableB;
}