在laravel中插入关系

问题描述 投票:6回答:3

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

我正在使用Laravel Relationships加入两个表。现在我想在用户提交表单后同时在两个表上插入数据。这是第一个表是第一个表是主要的说“用户”和第二个“xyz”属于第一个表。表“xyz”包含连接两个表的“users_id”列。显然,“users_id”是“用户”表的“id”列。

现在出现的问题是我想在“用户”表(很容易完成)和“xyz”表中同时插入数据。 User::create()函数将轻松创建用户数据并且它也正常工作但是为了在“xyz”表中插入数据,我将需要“user_id”列数据,并且在用户创建为ID列之前不会生成ID -Increment属性已激活。

码:

    $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))
php mysql sql laravel laravel-5
3个回答
8
投票

插入相关表的一种方法是使用以下关系:

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

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

它将自动填充user_id表中的xyz


1
投票

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

例如:

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

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

在官方的laravel文档中:

https://laravel.com/docs/5.6/eloquent-relationships#inserting-and-updating-related-models


-2
投票

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

$id = User::create($input_arr)->id;
Xyz::create([
    'user_id' => $id,
    ...
]);
© www.soinside.com 2019 - 2024. All rights reserved.