php - 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());
}
提前致谢。
解决方案
推荐阅读
- javascript - 如何将ngrx效果调用组合到单个流中?
- sql - 为什么我的 Access Max() 子查询不起作用?
- rabbitmq - 如何在 python 中使用 RabbitMQ 进行简单的单元测试?
- mongodb - 如果一个结果匹配,$limit 会停止获取吗?
- javascript - 如何在执行其他代码之前等待循环?
- multithreading - Golang 中的 channel 和 mutex 有什么区别?
- javascript - 带有预设环境(无选项)和预设打字稿的 Babel 说“缺少类属性转换”。为什么?
- c# - 如何连接到另一台机器上的 SQL Server
- netty - 为什么Netty创建Entry的时候需要加96字节?96字节有什么特殊含义吗?
- react-native - react-native-video 播放器进入缓冲模式,需要很长时间才能加载视频。我正在使用 snap carousel 库