Laravel 5.5将同一桌子中的孩子的父母归还

时间:2017-10-02 12:33:02

标签: php laravel eloquent relationship

是否有正确的方法来获取Laravel中子类别的所有父类别?

类别表:

id  | level | name   | parent_id
--- | ------| -------|----------
1   |  1    | Cat0   | -1
2   |  2    | Cat01  | 1
3   |  3    | Cat02  | 2
4   |  2    | Cat01a | 2

类别模型:

class Category extends Model
{

    protected $fillable = [

        'id', 'level', 'name', 'parent_id'
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function items()
    {

        return $this->hasMany(Item::class);
    }
}

id = 4所有父母那里获得一个收藏品似乎很难。

我试图像这样更改我的模型: Laravel returning children of parents in same table

..但它没有显示所需的结果。

我的控制器类:

class FrontEndController extends Controller
{

    public function item($item_slug, $id = null) {

        $item = Item::where('item_slug', '=', $item_slug)
            ->orWhere('id', '=', $id)->firstOrFail();

        $categories = $item->category()->first();
        $categoryTree = [];

        array_push($categoryTree, $categories);

        for($l = $categoryTree[0]['level']; $l > 1; $l--) {

            if((int)$l === $categoryTree[0]['level']) {

                $c = Category::where('id', '=', $categoryTree[0]['parent_id'])->first()->toArray();

            } else {

                $c = Category::where('id', '=', end($categoryTree)['parent_id'])->first()->toArray();
            }

            array_push($categoryTree, $c);
        }


        return view('public.item')->with([
            'item' => $item,
            'attributes' => $item->attributes()->get(),
            'categories' => array_reverse($categoryTree),
        ]);
    }
}

这显然有效,我将所有类别和子类别都放在一个数组中,但不能作为一个干净的集合。

0 个答案:

没有答案