当前位置: 首页 > 知识库问答 >
问题:

Laravel如何将一个产品插入多个类别

司马高昂
2023-03-14

我尝试了,但它重复的产品,我希望保存一个产品在许多类别下的一个产品为一个product_id。这里是我的视图创建(产品)

<div class="form-group row" id="category">
                        <label class="col-md-3 col-from-label">{{translate('Category')}} <span class="text-danger">*</span></label>
                        <div class="col-md-8">
                            <select class="form-control ml-selectpicker" name="category_id" id="category_id" data-live-search="true" required>
                                @foreach ($categories as $category)
                                <option value="{{ $category->id }}">{{ $category->getTranslation('name') }}</option>
                                @foreach ($category->childrenCategories as $childCategory)
                                @include('categories.child_category', ['child_category' => $childCategory])
                                @endforeach
                                @endforeach
                            </select>
                        </div>
                    </div>

这里是我的控件(创建产品)

   /**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    $categories = Category::where('parent_id', 0)
        ->where('digital', 0)
        ->with('childrenCategories')
        ->get();

    return view('backend.product.products.create', compact('categories'));
}

和保存

$product->category_id = $request->category_id;

这里是我的模型:

 public function category()
{
    return $this->belongsTo(Category::class);
}

我相信这些函数类似于$product->categories()->sync([1,3,4]);

共有1个答案

刘才俊
2023-03-14

如果你想储存一个产品在许多类别下,那么。您必须将您的关系改为多对多(一个产品可以有许多类别,而一个类别有许多产品)。因此您必须创建三个表

  1. 产品-存储产品
  2. 类别-存储类别
  3. category_products-pivot表

那么您的模型将像下面的产品模型

 public function categories(){
     return $this->belongsToMany(Category::class);
}

类别模型

public function products(){
     return $this->belongsToMany(Product::class);
}

然后,您可以简单地使用函数sync()将产品存储在laravel中的许多类别许多对许多关系下

 类似资料:
  • 我在桌子设计方面没有太多的经验。我的目标是创建一个或多个满足以下要求的产品表: > 支持多种产品(电视、电话、PC、...)。每种产品都有一组不同的参数,例如: > 手机将有颜色、大小、重量、操作系统... PC将有CPU、HDD、RAM... 参数集必须是动态的。您可以添加或编辑任何您喜欢的参数。 如果每种产品没有单独的表,我怎么能满足这些要求呢?

  • 我将一行一行地插入数据,但我在某处听说,如果有许多数据要插入,则需要很多时间。那么,如何一次将它们全部插入?

  • 问题内容: 我知道一次插入多个数据效率更高: 在golang中该怎么做? 使用字符串拼接,但这不是很好。db.Prepare更安全吧? 我需要一个功能更安全,更高效的函数,一次插入多个数据。 问题答案: 为什么不这样呢?(在此处编写但未进行测试,因此可能存在语法错误):

  • 批量订单 Purchorder 我已经试了一个星期了。我有这两个表,batchporder和purchord在batchporder表中,我需要插入一行,并获得传递给purchord插入的主id。在purchord中,我需要插入多行,因此我使用了insert\u batch。 控制器 模型 错误1 遇到PHP错误严重性:警告 消息:array_keys()要求参数1为数组,字符串为给定值 文件名:

  • 问题内容: 我有一个非常基本的模板(basic_template.html),并希望使用使用另一部分模板格式化的数据来填写。basic_template.html可能包含使用部分模板格式化的几件事。 我应该如何在views.py中构建代码? 我这样做的原因是稍后将使用Ajax填充。我这样做对吗? 问题答案: 你可以做: 另一个Django模板在哪里。在这里,你可以放入将用Ajax获得的HTML。

  • 我有一个用户表和一个帐户表。 此帐户表定义用户可以拥有的帐户。 例如 账户: 用户: 我现在有另一个表:users\u accounts 我正在为新用户创建一个界面。在这个页面上,我有基本的细节,但也有一个复选框列表(从accounts表创建)。复选框表示用户需要为其设置的帐户。 我要做的是创建帐户时: 我还想将用户ID和他们需要设置的帐户添加到users_accounts表中。单个用户可能需要多