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

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

居晗日
2023-03-14

我一直在尝试使用表a中已创建记录的id创建表B的记录。但由于某些原因,即使我转储了模型id的值,并且该字段是正确的,该字段始终为空。但当我将它分配给表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个答案

支才
2023-03-14

在困惑了相当一段时间之后。我尝试了一种不同的方法来创建模型,出于某种原因,它运行良好。

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;
}
吴胜
2023-03-14

A_id添加表b模型中的$filleble数组中:

protected $fillable = ['A_id', ......];
 类似资料:
  • 我有两个bean类--乡村和城市。我需要在乡村班保留城市名单。另外,当我设置城市信息时,我需要设置国家名称,所以在城市类中也需要国家。怎么做?以下是代码: country.java

  • 问题内容: 我有两个桌子和。我需要一些行插入从,它被插入之后。我知道这个问题,但我无法解决。请帮忙。 我为触发器编写了以下代码: 现在,当我插入行时,将添加到,但不添加到。它引发以下错误: _消息515,级别16,状态2,过程trigger_UpdateItemDetails,行11 无法将值NULL插入表’dbStockHandling.dbo.tbl_ItemDetails’的列’Purcha

  • 我对单元测试有问题。下面是示例代码片段。我模拟了一个bean,并将其注入@configuration类,然后使用mocked属性创建另一个bean。 在下面的示例中,如果我检查,b.getSomething()会返回默认值,如字符串为“”,int为0等。我不会得到模拟值。你知道怎么做吗?

  • 问题内容: 我有两个大表,并且想要将所有列名(而不是视图)组合到一个新表中。 我 没有权限 右键单击每个表并选择CREATE TO SCRIPT,所以我想知道是否有一种方法可以在不指定列数据类型的情况下将两个表插入到新表中? 问题答案:

  • 问题内容: 这是场景: 我正在尝试在插入表时创建引用记录。但是我得到的是null,因为它是自动从序列中生成的。我也尝试了触发器插入,但是结果是一样的。有什么办法解决吗? 问题答案: 避免使用规则,因为它们会再次咬住您。 在每行运行的表a上使用after触发器。它看起来应该像这样(未经测试):

  • 问题内容: 我正在使用MySQL。我有一个名为EMP的表,现在我需要再创建一个具有相同架构,相同列和相同约束的表(EMP_TWO)。我怎样才能做到这一点? 问题答案: 要基于其他表结构/约束创建新表,请使用: 要跨多个数据复制,请使用 创建表格文档 当心关于LIKE选项的注意事项: 使用LIKE根据另一个表的定义(包括原始表中定义的任何列属性和索引)创建一个空表: CREATE TABLE new