2014-05-07 277 views
0

我有這樣一個雄辯的結構化查詢: Ex。Laravel雄辯查詢

public function showUserWithFriends($username){ 
    $user = User::where('name','=',$username)->with('friends','friends.jobs')->get()->first(); 
    return $user; 
} 

這是查詢與用戶,某些用戶名,與他的朋友和他的朋友工作。但我的friends.jobs在SQL數據庫中被json_decoded。 有沒有什麼奇幻的方式來解碼模型,或者我應該去刀片並在那裏工作?

編輯:
代碼輸出:

{ 
'username': 'john.eager', 
'firstname': 'John', 
'lastname: 'Eager' 
'friends': [ 
    { 
     'firstname': 'Marco', 
     'lastname': 'Polo', 
     'jobs':[ 
      { 
      'data': "{\"1\":\"Software Inc\",\"2\":\"Programmer\",\"3\":\"Salary Great\",\"4\":\"Holiday No\"}" 
      } 
     ] 
    }, 
    { 
     'firstname': 'Dragon', 
     'lastname': 'Slayer', 
     'jobs':[ 
      { 
      'data': "{\"1\":\"Software Inc\",\"2\":\"Programmer\",\"3\":\"Salary Great\",\"4\":\"Holiday No\"}" 
      } 
     ] 
    } 
    ] 
} 
+0

是'friends.jobs'在朋友模型中的列? – akshaykumar6

+0

沒有朋友的工作是朋友和工作模式之間的關係,朋友 - > hasMany->工作。它是鏈接關係查詢。 – LaTzar

+0

你可以發佈你用這段代碼得到的輸出嗎? – akshaykumar6

回答

0

,因爲你有口才工作,你可以做處理您的模型,而不必擔心它。你也可以提供一個相反的方法:將數組作業保存到數據庫的json中。

class Job extends Eloquent 
{ 
    /** 
    * will be executed as soon as you call $job->jobs 
    * 
    * @return array 
    public function getData() 
    { 
     $data = json_decode($this->jobs); 
     return $data; 
    } 
} 

這與任何財產。所以如果你有my_pretty_long_attribute將是public function getMyPrettyLongAttribute()

你的榜樣

@foreach ($user->friends as $friends) 
    @foreach ($friends->jobs as $job) 
     $job->data // <- this will be your [1: "Software Inc", 2: "Programmer", ...] array 
    @endforeach 
@endforeach 
+0

您可以解釋如何在查詢關係綁定數據時使用函數嗎? – LaTzar

+0

你有'User'模型並且引用了一個'Friend'模型嗎? – zwacky

+0

是的, 用戶擁有很多的好友 朋友有很多工作 – LaTzar