我有一个类别模型,其中每个类别都可以是通用的或嵌套的。
类别: idparent_idtitle
要获取类别的子级和类别的所有嵌套子级,请使用带有递归的关系
public function children()
{
return $this->hasMany('App\Models\Category', 'parent_id', 'id');
}
public function allChildren()
{
return $this->children()->with('allChildren');
}
与产品的关系
public function product()
{
return $this->belongsToMany('App\Models\Product', 'categories_products');
}
如何从基本类别和所有嵌套类别中获取所有产品?
如果您不关心性能,像这样的东西应该可以工作(未经测试),但如果您有非常复杂的类别树,它显然可能会生成许多查询。
$products = Category::getAllProducts($categoryId);
public static function getAllProducts($categoryId, $products = null)
{
if ($products === null) {
$products = collect();
}
$category = Category::find($categoryId);
$products = $products->merge($category->product);
$category->children->each(function($child) {
$products = self::getAllProducts($child->id, $products);
});
return $products;
}
作为替代方案,您可以首先找到所有类别,然后找到属于这些类别的产品,假设您无法获得数百个类别,因为如果不使用原始查询,可能会导致PDO绑定问题。
使用Laravel 5.6,我试图从MySQL类别表中显示子类别的子类别。我想传递这个名字,并获得它的所有子类,而不管父类是什么。 类别表 期望结果 return App\Category::where('name','Child-1-P-2'))-
我为我的项目工作分层类别和产品表。 类别表结构: 身份证-父母-所有权 1-0-计算机 1-0-电话 ... 分类表行25107的计数。 产品表结构 ID-CAT-TITLE 1-1-产品名称在这里 我想要列表产品的当前类别和子类别。 输出为:641981835518356956239050461189005561179059050690507612090509050905059051090511
让我们想象一下Elasticsearch索引,其中每个文档代表一个国家。Country具有城市字段,该字段定义为嵌套的。 示例映射(为了本示例的简洁性而简化): 我插入到索引中的文档如下所示: 是否可以组成一个返回所有城市(所有国家)并支持排序的查询 第一个返回页面(回复)将包含捷克共和国的10个城市,第二个页面将包含10个城市,其中四个(最后一个)来自捷克共和国,六个来自斯洛伐克。 我正在研究复
我使用codeigniter和有一个表3列(id,名称,parent_id)。一个类别可以有多个子类别,一个子类别可以有多个子类别。 我一直在尝试使用以下代码获取所有类别及其子类别: 但它只返回1级类别。 我的问题是如何完成我的任务:获得每个级别的所有类别和子类别。
我正在开发一个电子商务网站,我使用三个表来管理产品和类别。 我需要一个或多个带有实体框架的linq查询来获得母类别列表、子类别列表和相关产品列表。 有一个类别表,如: Id NameCat ParentId 有一个products表,如: Id名称实时信息等。 有一个product-category表,如: Id categoryId productId sortOrder 这是我的viewmod
我对数据库非常陌生,我想知道原始sql查询。我有两个表Category和Product,Product表有一个foreign_key(Category_id)。 如何获得每个类别有10个产品的所有类别?所以我将在第一页显示每个类别名称和10个产品。 并且还想查询该产品的评论表。如何连接两个表(类别和产品(1),评论(2)