実現したいこと
Lumen5.6.3で、Eloquentを用いて
例えば下記のような一対多の関係を持つModelがあったとして
php
1 2class Company extends Model 3{ 4 protected $table = 'companies' 5 6 public function employees() 7 { 8 return $this->hasMany('App\Employee','employee_id','id'); 9 } 10} 11 12class Employee extends Model 13{ 14 15 protected $table = 'employees' 16 17 public function company() 18 { 19 return this$->belongsTo('App\Company','company_id','id'); 20 } 21} 22
idをキーにしてDBからCompanyを1件取得して
下記のようなJson形式の応答を返したい
json
1[{ 2 "id":3, 3 "name":hogecompany, 4 "employees":[ 5 {"id":1,"name":fuga}, 6 {"id":2,"name":fuga2}, 7 ... 8 ] 9}]
###現状
####現在のControllerのロジック
php
1class CompanyController extends Controller 2{ 3 public function find($id) 4 { 5 $company = Company::with('employees') 6 ->where('id',$id) 7 ->get(); 8 return response()->json($company,200,[],JSON_UNESCAPED_UNICODE); 9 } 10}
####Apiを叩いいたときに帰ってくるJson
json
1[{ 2 "id":3, 3 "name":hogecompany, 4 "employees":[] 5}]
試したこと
####Companyクラスのemployees関数を下記のように変更
php
1 2 public function employees() 3 { 4 return $this->belongsTo('App\Employee','employee_id','id'); 5 }
これだとResponseが下記のようになり、Employeesが1件しか含まれない
json
1[{ 2 "id":3, 3 "name":hogecompany, 4 "employees":{"id":1,"name":fuga} 5}]
###最後に
PHPの初心者でRESTApiをいきなり実装しようとして躓きました。
実際のデータはもう少し複雑なのですが、質問用に簡略化しています。
アドバイスを頂ければと思います。
不足している情報ありましたらご指摘お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/09 02:05 編集