我想获得属于某一类别的所有产品。 我有一个类别表,最多可以有3个级别。
->grandparent category
------>Parent category
-------------> Child category
我有一个产品表可以属于这些类别中的任何一个(category_id
字段)。如果我选择祖父母类别,我希望能够获取所有产品:
category_id
与祖父母类别category_id
字段与作为祖父母类别的子类的父类别匹配。 category_id
字段匹配
作为子类的父类别的子类别的子类别
祖父母类别。我有以下代码:
$category = Category::select('id')
->where('parent_id', $category->id)
->orWhere('id', $category->id)
->get();
结果是Id的列表,然后我用它来查询产品表。这段代码的问题在于它只能让我降低一级(即祖父母和父母都属于它)。
任何帮助非常感谢
答案 0 :(得分:1)
您可以尝试“递归”功能:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Grandparents extends Model {
protected $table = 'your table';
protected $with = [ 'children' ];
protected $visible = [ 'id', 'children' ];
public function children() {
return $this->hasMany( Grandparents::class, 'parent_id', 'id' )->with( 'children' );
}
}
然后检查结果是否正常:
print_r( \App\Models\Grandparents::where( 'id', '=', 1000 )->get()->toArray() );
此致 卢卡斯