Как обрабатывать вложенные отношения в ресурсе laravel - 2 - PullRequest
0 голосов
/ 15 октября 2019

Итак, я пытался получить отношение второго уровня из моего "CategoryResource", но оно не работает, вот мой код:

Во-первых, моя модель:

public function children()
{
        return $this->hasMany(Category::class, 'parent_id', 'id');
}
public function sub_children()
{
        return $this->hasMany(Category::class, 'parent_id');
}

и затем "CategoryResource":

    $data = [

        'id' => $this->id,

        'parent_id' => $this->parent_id,
        'order' => $this->order,
        'name' => $this->name,
        'slug' => $this->slug,

        'childs' => CategoryResource::collection($this->whenLoaded('children') && $this->whenLoaded('children')),

        'created_at' => (string) $this->created_at,

        'updated_at' => (string) $this->updated_at,

    ];

Мой контроллер

    return CategoryResource::collection(Category::where('parent_id',null)->with('children.sub_children')->get());

В любом случае я могу получить свое вложенное отношение через ресурс laravel?

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете использовать функцию with в отношениях. Это было бы что-то вроде этого:

public function children()
{
    return $this->hasMany(Category::class, 'parent_id', 'id')
                ->with('children');
}

Он будет загружать потомков, а затем "subChildren" как отношения первого объекта.

Итак, вы собираетесь загрузить его как:

$children = $originalObject->children;
foreach ($children as $c) {
    $subChildren = $c->children;
}

Проверьте, работает ли это для вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...