Laravel同时在数据库中输入一对多

时间:2016-11-19 19:37:42

标签: laravel

我有一张卡,这张卡有标签。因此,卡片有许多标签,而标签属于卡片。

用户填写表单。他同时提供了卡片的信息以及标签。

现在我需要为每个标记提供信息' card_id'所以它可以连接。

现在我的问题是我不知道这个' card_id'但是因为数据库还没有分配id,因为它们都是同时创建的。

我的情况:

$foo['attachments'] = [(object) $foo['attachments']];

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

$card = new Card([
    'card_name' => request()->get('card_name'),
    'something_else' => request()->get('something_else')
]);

if($card->save()) {

    $tags = [];

    // Get the tag information from request
    $tagsFromRequest[
        ['tag_title' => 'A Tag', 'tag_slug' => 'a_tag'],
        ['tag_title' => 'Another Tag', 'tag_slug' => 'another_tag']
    ];

    foreach($tagsFromRequest as $tag) {
        $tags[] = new Tag($tag);
    }

    $card->tags()->saveMany($tags);
}

现在,根据请求准备你的标签,其中每个标签项应该是上面给出的数组,我不能更具体,因为你没有给出任何你尝试过的东西,这可能有助于我理解你的场景。 Check the documentation