2015-08-05 4 views
2

В настоящее время у меня естьФильтрация QuerySet с объектами

foreach($this->friends as $friend) { 
    $user_ids[] = $friend->id; 
} 

$posts = Post::whereIn("user_id", $user_ids)->orderBy("date_published", "desc")->paginate(15); 

Кажется, все в порядке и работает нормально, но создание массива является немного странным. Есть ли способ, который я мог бы фильтровать самими объектами User? Например

Post::whereIn("user", $this->friends) 

, где $this->friends будет

public function friends() { 
    return $this->belongsToMany("App\User", "friends_users", "user_id", "friend_id"); 
} 

ответ

1

$this->friends является Collection объектом, который имеет lists метод, который создает массив из столбца, или ассоциативный массив из 2-х столбцов. Вот как вы его используете.

$posts = Post::whereIn("user_id", $this->friends->lists('id'))->orderBy("date_published", "desc")->paginate(15); 
Смежные вопросы