如何为双方关系使用laravel资源

如何为双方关系使用laravel资源,laravel,eloquent,laravel-6,Laravel,Eloquent,Laravel 6,我有一种“多对多”的关系 属于许多工作的类别 和 工作属于多个类别 我有两个资源:CategoryResources和JobResources 它们是这样的: 类别资源 'name' => $this->name, 'slug' => $this->slug, 'icon' => $this->icon, 'created_at' => $this->created_at->diffForHumans(), 'jobs' => JobR

我有一种“多对多”的关系

属于许多工作的类别


工作属于多个类别

我有两个资源:
CategoryResources
JobResources

它们是这样的:

类别资源

'name' => $this->name,
'slug' => $this->slug,
'icon' => $this->icon,
'created_at' => $this->created_at->diffForHumans(),
'jobs' => JobResources::collection($this->jobs)
就业资源

'id' => $this->id,
'title' => $this->title,
'slug' => $this->slug,
'description' => $this->description,
'type' => new TypeResources($this->type),
'categories' => CategoryResources::collection($this->categories)
'created_at' => $this->created_at->diffForHumans()
问题是获取数据需要无限的时间。我怎样才能防止这种情况

作为替代,我制作了不同的资源,如
JobReverseResource
,但它是错误的


感谢

原因可能是他们一直在互相呼叫,因此,获取数据变得无穷无尽。或者另一个原因可能是您试图在数据准备就绪之前获取数据。您可以尝试使用以下代码:

// eager loading categories
'categories' => CategoryResources::collection(Category::with('jobs')->get())

// or in case you want them after fetching all data
$category->load('jobs');

// eager loading jobs
'jobs' => JobResources::collection(Job::with('categories')->get())
// or in case you want them after fetching all data
$jobs->load('categories');

原因可能是他们不停地互相呼叫,因此,获取数据的时间越来越长。或者另一个原因可能是您试图在数据准备就绪之前获取数据。您可以尝试使用以下代码:

// eager loading categories
'categories' => CategoryResources::collection(Category::with('jobs')->get())

// or in case you want them after fetching all data
$category->load('jobs');

// eager loading jobs
'jobs' => JobResources::collection(Job::with('categories')->get())
// or in case you want them after fetching all data
$jobs->load('categories');

你有一个循环引用。作业获取类别,它获取作业,它获取类别,永永远远。您有一个循环引用。作业获取类别,它获取作业,它获取类别,永远。