Laravel, получение результата родителями и детьми - PullRequest
0 голосов
/ 03 августа 2020

Я работаю над небольшим проектом, используя последнюю версию Laravel, у меня есть две модели Building и Apartment, и я создал связь между этими двумя моделями, как вы можете видеть внизу.

Я бы хотел хотел бы получить результат иерархическим способом, вот так.

building_number x
      apartment_number x
      apartment_number y
      apartment_number z

building_number y
      apartment_number x
      apartment_number y
      apartment_number z

Это мои модели:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Apartment;

class Building extends Model
{
    protected $guarded = [];

    public function apartment(){
        return $this->hasMany(Apartment::class);
    }
}

//

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Building;

class Apartment extends Model
{
    protected $guarded = [];
    
    public function building(){
        return $this->belongsTo(Building::class);
    }
}

Моя функция контроллера

public function index()
{
    $apartments = Apartment::with('building')->get();
    return response()->json($apartments);
}

мой результат сейчас:

[
   {
      "id":1,
      "apartment_number":"1",
      "building_id":1,
      "created_at":"2020-08-03T08:46:36.000000Z",
      "updated_at":"2020-08-03T08:46:36.000000Z",
      "building":{
         "id":1,
         "building_number":"1"
      }
   }
]

1 Ответ

3 голосов
/ 03 августа 2020

Когда вы хотите, чтобы это было в этой иерархии, просто сделайте обратное. Когда вы запрашиваете здания и включаете все соответствующие квартиры.

public function index()
{
    $buildings = Building::with('apartments')->get();
    return response()->json($buildings);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...