2014-05-07 227 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