php - 在 laravel 中插入关系

标签 php mysql sql laravel laravel-5

我在 Laravel 5.3 中遇到一个问题,我查看了文档并搜索了网络但没有找到任何内容。

我正在使用 Laravel 关系连接两个表。现在我希望在用户提交表单后同时将数据插入到两个表中。这里的问题是第一个表是主要的“用户”,第二个“xyz”属于第一个表。表“xyz”包含连接两个表的“users_id”列。显然“users_id”是“users”表的“id”列。

现在的问题是我想同时将数据插入“users”表(这很容易完成)和“xyz”表。 User::create() 函数可以轻松创建用户数据,它也可以正常工作,但是为了在“xyz”表中插入数据,我需要“user_id”列数据,而 ID 不需要生成直到用户被创建,因为 ID 列激活了自动递增属性。

代码:

    $user = new User;
    $inputArry = array('data1' => $request['field1'],
                    'data2' => $request['field2'],
                    'data3' => $request['field3'],
                    );
    $user->create($inputArry);
    $user->xyz()->create([
        'user_id' => $user->id,
        'name' => $request['name'],
        'about' => $request['desc'],
        'tag' => $request['tag'],
    ]);

上面是我为此目的使用的代码,但它给我一个错误。

错误:

    QueryException in Connection.php line 761:
    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'soft_id' cannot be null (SQL: insert into `xyz` (`user_id`, `name`, `about`, `tag`, `updated_at`, `created_at`) values (, John, I am John, dev, 2016-11-09 21:01:29, 2016-11-09 21:01:29))

最佳答案

插入相关表的一种方法是使用关系作为:

$user = User::create($user_inputs);

$xyz = $user->xyz()->create($xyz_inputs);

它会自动在xyz表中填充user_id

关于php - 在 laravel 中插入关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40468976/

相关文章:

PHP、MySQL、Huge Join、处理速度

PHPWord 将 HTML 读入表格单元格

mysql - 使用单个查询将 id 替换为名称

sql - 当我运行简单的选择查询时,是否可以不显示最后受影响的行数?

javascript - 将 AJAX 与 PHP 循环创建的表单结合使用

php - 捕获数组组合警告并打印自己的错误消息?

mysql - sql查询中返回空值而不是空集

mysql - 无法使用客户端 mysql CL 工具连接到 Google Cloud SQL 实例

mysql - 连接和多重和条件

sql - 列名作为变量