我一直在尝试使用表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();
});
}
答案 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;
}