我尝试了,但它重复的产品,我希望保存一个产品在许多类别下的一个产品为一个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]);
如果你想储存一个产品在许多类别下,那么。您必须将您的关系改为多对多(一个产品可以有许多类别,而一个类别有许多产品)。因此您必须创建三个表
那么您的模型将像下面的产品模型
public function categories(){
return $this->belongsToMany(Category::class);
}
类别模型
public function products(){
return $this->belongsToMany(Product::class);
}
然后,您可以简单地使用函数sync()
将产品存储在laravel中的许多类别许多对许多关系下