【发布时间】:2023-04-01 02:43:01
【问题描述】:
我是 Laravel 的新手,所以我遇到了一些问题。我的数据库中有“类别”和“产品”表。在我的模型中,我设置了如下关系:
Product.php:
public function category()
{
return $this->belongsToMany(Category::class);
}
Category.php:
public function products()
{
return $this->hasMany(Product::class);
}
我现在需要的是选择所有类别及其相关产品。 (用户在搜索栏中输入类别名称并获取类别列表,当用户选择类别时,我会从类别中获取所有列以及与该类别相关的产品)。
我尝试过这样的事情:
public function findCategory(Request $request)
{
return Category::with('products')
->where('name', 'like', '%' . $request->category_name . '%')
->limit(15)
->get();
}
还有:
public function findCategory(Request $request)
{
return Category::where('name', 'like', '%' . $request->category_name . '%')
->products()
->limit(15)
->get();
}
但这似乎不起作用,我的想法也用完了。有谁知道是否有办法做到这一点?任何帮助将不胜感激:)
【问题讨论】:
-
在产品集合中您是从哪里搜索还是从类别搜索?
-
不确定我是否理解您的问题。但我不需要产品集合中的“位置”。 where 子句应该在类别上。基本上像 Category::where('name', 'like', '%' . $request->category_name . '%') 这工作得很好,但我也想获得与特定类别相关的产品
-
是否存在多对多关系?
-
是的,现在我得到了我的 vue 组件数据 - 类别列表(其中我有 id、name 等列),我还想要一个与这个特定类别相关的产品数组
-
看到这个希望对你有帮助 -> link