用关系搜索eloquent

时间:2018-02-15 11:38:09

标签: laravel eloquent

我想按照

之后的($ _POST ['search']'“name”和“lastname”')搜索用户
  

“user id = 1”

我得到了用户,我得到的用户

  

“name”和“lastname”

我得到了表追随者,我得到了粉丝

  

“follower_id”和“user_id”......

我知道要做到这一点我必须使用相关的模型,但我不知道如何......

//$user_id = 1 (in followers.user_id)
//$_POST['search'] (in users.name and users.lastname)

public function u_followers_search($user_id) {

$followers = ...

return $followers;

}

1 个答案:

答案 0 :(得分:0)

您需要在User型号上设置关系:

function followers() {
    return $this->hasMany(Follower::class)
}

这将使您能够:

$userId = 1 // or however you get the user id
$user = User::findOrFail($userId)->followers;

修改

通过这种关系,这意味着您将能够获得跟随特定用户的所有关注者:

$allFollowers = User::findOrFail($userId)->followers;

这将为所有关注用户ID为<1 / p>的用户提供帮助

然后,您可以继续查询并添加匹配条件

$allFollowers->where('name', 'like', '%' . $search . '%')
             ->orWhere('lastname', 'like', '%' . $search . '%')
             ->get();

这会过滤ID为1的用户的所有关注者,并且只会在namelastname

中获取具有搜索查询的关注者

编辑2:

为了实现上述目标,您需要双向建立关系:

User型号:

function followers() {
    return $this->hasMany(Follower::class)
}

Follower型号:

function user() {
    return $this->belongsTo(User::class)
}

这将使您能够获得指定用户的关注者