Вложенный JSON с Eloquent - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в Laravel и хочу создать API. Я просто хочу узнать, как создать ответ JSON, подобный этому

   JSON RESPONSE: 
[
 {           //THIS IS MODEL FOR Industry 
 id: "1",
 value: "Accounting / Finance 
 sectors: [   //THIS IS MODEL FOR Sectors 
    {
     id: "1",       //sector_id AS id 
     value: "Accounting"
    },
    {
     id: "3",
     value: "Finance"
    }
 ],
 id: "2",
 value: "Audit / Tax"
 sectors: [
    {
     id: "4",
     value: "Audit"
    },
    {
     id: "5",
     value: "Tax"
    }
  ]
 }
]

База данных в моих отраслях содержит

| id |        value       |
|  1 | Accounting/Finance |
|  2 | Audit/Tax          |

пока моя база данных в industry_sectors содержит

| sector_id | industry_id |  name       |
|     1     |     1       |  Accounting |
|     3     |     1       |  Finance    |
|     4     |     2       |  Audit      |
|     5     |     2       |  Tax        |

Ниже приведен мой частичный код для моделей.

МОДЕЛИ

Industries.php

 namespace App\Models;

 use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;

 class Industries extends Authenticatable
  {
    use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
public $primaryKey = 'id';           
public $table = 'industries';         
public $timestamps = false;

protected $guarded = [];




}

IndustrySectors.php

 namespace App\Models;

 use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;

 class IndustrySectors extends Authenticatable
 {
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
  public $primaryKey = 'sector_id';
  public $table = 'industry_sectors';
  public $timestamps = false;

   protected $guarded = [];


  }

Я хочу использовать API в качестве метода GET, и это мой частичный код, но он просто печатает всю базу данных в формате json в таблице Industry Sectors.

 public function getIndustry(){
    $flight = IndustrySectors::all();

    return response()->json($flight);
  }

1 Ответ

0 голосов
/ 17 мая 2018

Сначала необходимо объявить отношения между industries и industry_sectors, объявив его

// in Industries.php
public function industrySectors() {
    return $this->hasMany('App\IndustrySectors');
}

// in IndustrySectors.php
public function industries() {
    return $this->belongsTo('App\Industries');
}

Также обязательно прочитайте Документация по красноречивым отношениям Laravel внимательно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...