Решением будет определение отношения hasOne как
public function parent()
{
return $this->hasOne(Category::class,'id','parent_id');
}
И затем вы можете определить ресурс, где вы можете претендовать на звание родителя, используя определенное отношение, как показано ниже
$this->parent->title
Создать свой ресурс используя команду
php artisan make:resource CategoryResource
Тогда в вашем контроллере вы должны использовать ресурс
use App\Http\Resources\CategoryResource;
и в рамках действия контроллера предоставьте ответ, подобный
$categories = Category::paginate(15);
return CategoryResource::collection($results); // instead of response()->json($categories , 200);
И пример того, как ваш ресурс должен выглядеть
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class CategoryResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'parent_id' => $this->parent_id,
'parent_title' => $this->parent->title,
...
];
}
}
Информация о ресурсах, которые вы можете найти https://laravel.com/docs/5.8/eloquent-resources