第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

類別和子類別的集合?

類別和子類別的集合?

PHP
汪汪一只貓 2023-12-15 15:31:36
類別表id| name               | parent_id   --|------------------  |-----------  1 | Clothing           |  null   2 | Shirt              |  1   3 | Sports shirt       |  2   4 | Men's sports shirt |  3   5 | Hat                |  1 類別型號(hào):    public function child()    {        return $this->hasMany(Category::class, 'parent_id', 'id');    }    public function newRelation($allCategories){        if ($this->child->isNotEmpty()) {            $children = collect();            $allCategories = $this->subCategories($children);        }        return $allCategories->unique();    }    public function subCategories($allCategories) {        $this->child->map(function($item, $key) use(&$allCategories){            $allCategories->push($item);            if ($item->child->isNotEmpty()) {                $allCategories->push($item->subCategories($allCategories));            }        });        return $allCategories;    }控制器:$allCategories = collect();$category = Category::find(1);$result = $category->newRelation($allCategories);它是如何工作的,但在另一個(gè)集合中返回一些額外的數(shù)據(jù)集合,實(shí)際上在 subCategories 方法中每次返回 $allCategories 包括整個(gè)集合,最終結(jié)果有包含其本身的集合。有什么想法嗎?
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

該指南有些有效,但最后我使用了一個(gè)有用的包 [lazychaser / laravel-nestedset][1]

這使得使用類別和子類別變得更加容易

$categories = Category::with('descendants')->get()->toTree();

要不就

$categories = Category::with('descendants')->get()->toFlatTree();

你也可以用祖先代替后代 就這么簡(jiǎn)單
[1]:https://github.com/lazychaser/laravel-nestedset


查看完整回答
反對(duì) 回復(fù) 2023-12-15
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

我建議將邏輯轉(zhuǎn)移到相關(guān)類中,以便更容易理解您在做什么。


控制器:

    public function get(Category $category): Collection

    {

       return (new GetAllCategories($category))->handle();

    }

模型

    public function children(): HasMany

    {

        return $this->hasMany(Category::class, 'parent_id', 'id');

    }

GetAllCategories 操作類。這個(gè)類將循環(huán)遍歷每個(gè)孩子并返回相關(guān)的孩子。

    public function handle(): Collection

    {  

        return $this->buildCategory($this->category);

    }


    protected function buildCategory(Category $category): Collection

    {  

        return collect([

            'category' => $category,

            'children' => $this->getChildren($category),

        ]);

    }   


    protected function getChildren(Category $category): Collection

    {  

        return $category

                ->children

                ->map(fn($child) => $this->buildCategory($child));

    }   

我沒(méi)有添加use語(yǔ)句、__consturct方法或路由綁定。我假設(shè)您使用的是 php7.4 和 laravel 7.*


查看完整回答
反對(duì) 回復(fù) 2023-12-15
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)