调用函数

时间:2015-10-03 06:22:57

标签: laravel laravel-4 laravel-5

如果我有类似的话:

$users = Helpers::getUsersFollowing($user_id);

getUsersFollowing()看起来像这样:

public static function getUsersFollowing($user_id)
{
    return Follow::where('user_id', $user_id)
        ->select('username')
        ->get();
}

如果不修改函数中的代码,可以在函数调用后应用更多查询,例如:

$users = Helpers::getUsersFollowing($user_id)
    ->with('posts')
    ->select('display_name')
    ->get();

我需要能够选择显示名称(除了用户名)并获取用户的帖子,但同样不需要修改功能中的代码。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

是的,您应该可以这样做:

正如jensaronsson在评论中指出的,这是更好的解决方案,因为它不会导致n + 1查询

$users = Helpers::getUsersFollowing($user_id);

$user->load('posts')

// Do this if you need additional query constraints
$users->load(['author' => function ($query) {
    $query->orderBy('whatever', 'asc');
}]);

请参阅Laravel Docs: Querying Relationships

为此,您的Follow-Model需要建立如下关系:

public function posts()
{
    return $this->hasMany('App\Post'); // Replace 'App\Post' with your model!
}

旧解决方案(不推荐)

foreach ($users as $user) {
    $user->posts()->get()
}