如何获得一个类别编辑laravel的子孙的id

时间:2017-01-24 09:54:06

标签: php sql laravel

我想获得属于某一类别的所有产品。 我有一个类别表,最多可以有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的列表,然后我用它来查询产品表。这段代码的问题在于它只能让我降低一级(即祖父母和父母都属于它)。

任何帮助非常感谢

1 个答案:

答案 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() );

此致 卢卡斯