首页 > 解决方案 > Laravel 自递归关系

问题描述

我目前正在学习 Laravel。我在数据库中有一个名为“文件夹”的列,它具有自依赖性。一个文件夹中可能有多个文件夹。我想创建一个具有预期结果中所示结构的 api。但是,我得到的结果是实际结果。

预期和实际结果

有人可以指导我达到预期的结果吗?我不想让孩子们成为父母。

下面是我的代码实现:

模型

class Folder extends Model
{
    use HasFactory;

    /**
     * The relationships that should always be loaded.
     *
     * @var array
     */
    protected $with = ['inner_folders'];

    public function inner_folders()
    {
        return $this->hasMany(self::class, 'folder_id')->with('inner_folders');
    }

    protected $fillable = [
        'user_id',
        'folder_id',
        'folder_name',
        'folder_attr',
        'image'
    ];
}

资源收集

public function toArray($request)
    {
        return [
            'id' => $this->id,
            'folder_name' => $this->folder_name,
            'folder_attr' => $this->folder_attr,
            'image' => $this->image,
            'folder_id' => $this->folder_id,
            'inner_folders' => FolderResourceCollection::collection($this->whenLoaded('inner_folders'))
        ];
    }

控制器

public function index(Request $request)
    {
        $user_id = $request->input('user_id');
        return new FolderResource(Folder::where('user_id', $user_id)->get());
    }

提前致谢。

标签: phplaravel

解决方案


推荐阅读