2015-09-07 113 views
-1

我有一个users表和posts表与['title', 'body', 'user_id', 'id']并且只有一对一的关系。Laravel过滤器关系字段

我该如何过滤posts表,其中只显示body字段使用它们的关系。

例如

$users = User::with('post')->get(); 

,其结果将是

[{ 
    'username':'jrsalunga', 
    'post_id': 1, 
    'post': {'title': 'sample title'}, // show title only 
    'id': 2 
}] 

回答

1

,你也可以在与()之类

$users = User::with([ 
     'posts' => function ($query) { 
      $query->select('title', 'user_id'); 
     } 
    ])->get(); 

记住要添加外键添加一个闭合功能( user_id),或者你会从帖子关系中得到一个空值

另外,我认为你需要改变你的rela tionship一到多,像

用户模型

public function posts() 
    { 
     return $this->hasMany('App\Post'); 
    } 

Post模型

public function user() 
    { 
     return $this->belongs('App\User'); 
    } 
+0

就像魅力一样!谢谢! – jrsalunga

0

最起码,你也必须选择职位的user_id,所以这不能被雄辩自动处理。


下面是你可以在他们自己的映射:

$users = User::with('post')->get()->map(function ($user) { 
    $user = $user->toArray(); 

    $user['post'] = array_only($user['post'], 'title'); 

    return $user; 
}); 
+0

这也适用!谢谢先生!包括“外键(user_id)”的 – jrsalunga