Как вставить несколько строк в одну и ту же таблицу одновременно в laravel - PullRequest
0 голосов
/ 08 мая 2020

У меня есть таблица products и таблица pr_tags . Я хочу добавить свои теги товаров в таблицу pr_tags. Модель PrTag:

protected $table = 'pr_tags';
protected $fillable=['pr_tags','slug','product_id'];

Я думал, что могу сделать это с l oop в контроллере, но мой l oop работает некорректно.

    try {
            $request->merge(['pr_prev_price' => $request->pr_last_price, 'slug' => $slug, 'seller_id' => Auth::id()]);
            $newProduct = Product::create($request->except('pr_tags'));

            $last_id = $newProduct->id;

            $countTags = count(explode(',', $request->pr_tags));
            for ($i = 0; $i < $countTags; $i++) {
                $splitedTags = explode(',', $request->pr_tags);
                $tag_slug = str::slug($splitedTags[$i]);
                $request->merge(['product_id' => $last_id, 'slug' => $tag_slug, 'pr_tags' => $splitedTags[$i]]);
                PrTag::create($request->only('pr_tags', 'slug', 'product_id'));
            }
            return response(['processStatus' => 'success', 'processTitle' => 'Success', 'processDesc' => 'Congratulations , product added successfully !']);

        } catch (\Exception $e) {
            return response(['processStatus' => 'error', 'processTitle' => 'Error', 'processDesc' => 'Product could not added !', 'error' => $e]);
        }

Прежде всего i Я создаю свою новую таблицу для таблицы продуктов, и я получаю новый идентификатор ( $ last_id ) нового продукта для магазина в моей таблице pr_tags . Чем мой l oop begin.My Теги продуктов ( $ request-> pr_tags ) представлены как 'tag, tag2, tag3 ...'. Я взламываю эти теги, чтобы хранить их в своих строках как:

|id|tag |slug |product_id|
------------------------
|1 |tag |tag  |1         |
|2 |tag2|tag2 |1         |
|3 |tag3|tag3 |1         |
..........................

Но этот l oop дает мне только одну строку, а не так, как я ожидал. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...