无法扭转Laravel中雄辩的关系

时间:2017-05-22 21:43:42

标签: php laravel

在我的Laravel应用程序上,我正在努力让用户能够“阻止”其他用户。

在我的用户模型中,我尝试定义用户之间的“阻止”关系:

public function blockedOfMine() {
    return $this->belongsToMany('CommendMe\Models\User', 'blocked', 'user_id', 'blocked_id');
}

public function blockedBy() {
    return $this->belongsToMany('CommendMe\Models\User', 'blocked', 'blocked_id', 'user_id');
}

public function blocked() {
    return $this->blockedOfMine()->get();
}

public function blockedMe() {
    return $this->blockedBy()->get();
}

public function isBlocked(User $user) {
    return (bool) $this->blocked()->where('id', $user->id)->count();
}

public function hasBlockedMe(User $user) {
    return (bool) $this->blockedMe()->where('id', $user->id)->count();
}   

基本上,此模型只是试图弄清楚用户是否已阻止其他用户(函数isBlocked)或用户是否已被其他用户阻止(函数hasBlockedMe)。

现在,第一个函数运行正常,但第二个函数没有,尽管它们完全相同:

if (Auth::user()->isBlocked($user)) {
   return redirect()->back()->with('info', 'You cannot message blocked users.');    
}
if (Auth::user()->hasBlockedMe($user)) {
   return redirect()->back()->with('info', 'This user has blocked communications with you.');   
}   

因此,如果我尝试向被阻止的用户发送消息,我会收到消息“您无法向阻止的用户发送消息。”但是当我尝试向阻止我的用户发送消息时,该消息完全正常。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,我不确定我是否应该发布这个"答案"或者没有,看到问题我是一个白痴,但事实证明我登录了使用相同头像的错误帐户,所以我感到困惑。这就是为什么消息被发送,尽管被阻止"。哎呀...