Это может быть достигнуто несколькими способами.
РЕШЕНИЕ 1:
Самое простое, о чем я могу думать, это создать отношения на модели Category
, например:
class Category extends Model
{
protected $table = 'Category';
protected $primaryKey = 'category_id';
public function parent()
{
return $this->belongsTo(static::class, 'parent_id', 'category_id')
}
}
Затем от контроллера:
use App\Category;
class CategoriesController extends Controller
{
public function index()
{
return Category::with('parent')->get();
}
}
Тогда ваш JSON ответ будет примерно таким:
[
{
category_id,
parent_id,
category_name,
parent: {
category_id,
parent_id,
category_name,
}
},
{
category_id,
parent_id,
category_name,
parent: {
category_id,
parent_id,
category_name,
}
}
]
// from the front-end you can access the parent name by:
category.parent.category_name
РЕШЕНИЕ 2:
Более эффективный подход может быть добавление подзапроса , например:
class CategoriesController extends Controller
{
public function index()
{
Category::addSelect('parent_name' => DB::table('category as parent'))
->select('parent.category_name')
->whereColumn('parent.category_id', 'category.category_id')
->limit(1)
}->get();
}
Тогда ваш JSON ответ будет выглядеть примерно так:
[
{
category_id,
parent_id,
category_name,
parent_name
},
{
category_id,
parent_id,
category_name,
parent_name
}
]