2017-11-16 9 views
0

を使用して、それをJSONとしてすべてのユニットを各ユーザーに返すようにしようとしています2つのテーブル(単位、ユーザーを)持っている:私はこれを行うにしようとしています各ユーザーは多くのユニットを持つことができ、私はlaravel

$unitsPayments = Unit::leftJoin('uf_user', 'uf_unit.owner', '=', 'uf_user.id') 
->select('uf_unit.code','uf_user.display_name','uf_unit.neighborhood', 
     'uf_unit.id AS unit_id','uf_unit.owner AS unit_owner')->get(); 

が、このように区切られたデータを返します。私はそれ

内部に第一のユーザおよびすべてのIT装置を有する必要 ので終わりに私はユーザーのための2つのノードを有し、各ノードは、2つの単位ノードを

を有することになるこれは、現在のJSONである:

[ 
    { 
     "code": "121", 
     "display_name": "zal", 
     "neighborhood": "wan", 
     "unit_id": 49, 
     "unit_owner": 17 
    }, 
    { 
     "code": "47", 
     "display_name": "Ahmad", 
     "neighborhood": "aim", 
     "unit_id": 63, 
     "unit_owner": 2 
    }, 
    { 
     "code": "21", 
     "display_name": "Ahmad", 
     "neighborhood": "wan", 
     "unit_id": 64, 
     "unit_owner": 2 
    }, 
    { 
     "code": "102", 
     "display_name": "zal", 
     "neighborhood": "war", 
     "unit_id": 65, 
     "unit_owner": 17 
    } 
] 

、これは私が見えるようにデータを必要とする方法である:

[{ 
     "display_name": "zal", 
     "unit_owner": 17, 
     "units": { 
      "code": "102", 
      "neighborhood": "war", 
      "unit_id": 65 
     } { 
      "code": "121", 
      "neighborhood": "wan", 
      "unit_id": 49 
     } 
    }, 
    { 
     "display_name": "Ahmad", 
     "unit_owner": 2, 
     "units": { 
      "code": "47", 
      "neighborhood": "aim", 
      "unit_id": 63, 
     } { 
      "code": "21", 
      "neighborhood": "wan", 
      "unit_id": 64, 
     } 
    } 
] 
+3

ない画像としてコードとしてJSONを追加してください。 – pirho

+0

現在の出力と期待される出力を_both_に追加する必要もあります。あなたのイメージは十分にはっきりしていません。 –

+0

なぜあなたhasMany関係を使用していない –

答えて

2

あなたは本当に雄弁を使用して、適切な関係を設定する必要があります。https://laravel.com/docs/5.5/eloquent-relationships

あなたのコードは次のようになります。

$unitsPayments = User::with('units')->get(); 

そして、Userクラス内:

class User extends Model { 
    public function units(){ 
    return $this->hasMany(Unit::class, 'owner'); 
    } 
} 
+0

これはそれを解決してくれてありがとう –