2015-09-07 80 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