6

我正在尝试通过 Eloquent 获取来自特定国家/地区的所有用户。

问题是我得到了所有记录,where 子句不起作用。

$res = User::with(array('country' => function($query) {
          $query->where('country', '=', 'salope');
       }))->get();

遵循 laravel 文档中的这种模式

$users = User::with(array('posts' => function($query)
{
    $query->where('title', 'like', '%first%');
}))->get();

我的模型:

class User extends SentryUserModel {
    public function country() {

        return $this->belongsTo('country','country_id');
    }
}
class Country extends Eloquent {
    public function users() {

        return $this->hasMany('users');
    }

}

我究竟做错了什么 ?

4

5 回答 5

4

我在 laravel 4.1 版本中找到了我想要的东西。我的问题表述不正确。我想查询关系。

$posts = Post::whereHas('comments', function($q)
{
    $q->where('content', 'like', 'foo%');

})->get();

所以以我为例:

 $res = User::whereHas('country', function($q) {
        $q->where('country', 'salope');
       })->get();

文档链接

于 2014-03-05T09:48:41.993 回答
2

问题是您要检索所有用户,然后仅限制这些用户可以拥有的国家/地区。因此,您最终仍将拥有所有用户,而不仅仅是属于 Salope 的用户。

我认为解决方案是倒退。

$country = Country::where('name', 'salope')->with('users')->first();

foreach($country->users as $user)
{
    echo $user->username;
}
于 2013-11-15T14:11:42.530 回答
2

如果您想要特定国家/地区的用户,您需要类似的东西。

$users = Country::whereCounty('salope')->users;
dd($users);

users雄辩的人在哪里Collection,您遍历它Collection并显示用户。如果您想继续根据您的用户使用users()和保持链接构建查询,例如:

$users = Country::whereCounty('salope')->users()->whereBanned(0)->get(); // Or something
dd($users);
于 2013-11-14T12:40:23.470 回答
1
$matchThese = ['title' => post('title'), 'slug' => post('slug')];
return Blog::where($matchThese)->get();

像这样的东西也有效

于 2019-07-18T15:26:05.403 回答
0

从 Laravel 5.6 开始,这对我有用

我需要为用户及其角色创建关系。这些关系有一个使用链接到角色表的 user_roles 表的数据透视键。

在我的用户模型中

public function role(){
        return $this->belongsToMany('App\Roles', 'user_roles','user_id','role_id');
    }

然后,我在User 模型中创建了一个静态函数

  public static function withRole($role){
        $members = self::whereHas('role',function($q) use($role){
            $q->where('name', '=', $role);
        })->get();
       return $members;
    }

注意use($role)函数中的用法。

然后我可以使用以下方法调用此方法:

$members = User::withRole('the_role_name');

希望这对某人有帮助!

于 2018-09-26T14:12:39.137 回答