Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel中插入具有关系的对象_Php_Mysql_Sql_Laravel_Laravel 5 - Fatal编程技术网

Php 在laravel中插入具有关系的对象

Php 在laravel中插入具有关系的对象,php,mysql,sql,laravel,laravel-5,Php,Mysql,Sql,Laravel,Laravel 5,我在Laravel5.3中遇到了一个问题,我查看了文档,也搜索了web,但没有找到任何内容 我使用Laravel关系连接两个表。现在,我希望在用户提交表单后同时将数据插入两个表中。第一个表是主表,称为“users”,第二个表是第一个表的“xyz”。表“xyz”包含连接两个表的“users\u id”列。显然,“users\u id”是“users”表的“id”列 现在出现的问题是,我想同时在“users”表(这很容易做到)和“xyz”表中插入数据。User::create()函数将轻松创建用户数

我在Laravel5.3中遇到了一个问题,我查看了文档,也搜索了web,但没有找到任何内容

我使用Laravel关系连接两个表。现在,我希望在用户提交表单后同时将数据插入两个表中。第一个表是主表,称为“users”,第二个表是第一个表的“xyz”。表“xyz”包含连接两个表的“users\u id”列。显然,“users\u id”是“users”表的“id”列

现在出现的问题是,我想同时在“users”表(这很容易做到)和“xyz”表中插入数据。
User::create()
函数将轻松创建用户数据,它也在工作,但要在“xyz”表中插入数据,我将需要“User_id”列数据,并且在创建用户之前不会生成id,因为id列已激活自动递增属性

代码:

上面是我用于此目的的代码,但它给了我一个错误

错误:

    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))

您可以这样创建它们,而不是同时保存它们

$id = User::create($input_arr)->id;
Xyz::create([
    'user_id' => $id,
    ...
]);

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

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

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

它将自动填充
xyz
表中的
user\u id

如果需要插入许多项,请使用createMany或saveMany方法

例如:

$post = App\Post::find(1);

$post->comments()->createMany([
    [
        'message' => 'A new comment.',
    ],
    [
        'message' => 'Another new comment.',
    ],
]);
在官方的laravel文件中:


问题到底是什么?这是相当标准的数据库内容;如果不先保存父记录,则无法创建子记录<代码>$user=user::create(…)xyz中之前,必须调用code>。在第二个查询中使用用户表/插入查询中的“上次插入id”作为用户id
$user=user::create($data)$insertedId=$user->id是的,我调用了
$user=user::create([…])然后,如何将保存的用户id添加到“xyz”表的“用户id”?
$post = App\Post::find(1);

$post->comments()->createMany([
    [
        'message' => 'A new comment.',
    ],
    [
        'message' => 'Another new comment.',
    ],
]);