首页 文章

从雄辩的关系中返回null?

提问于
浏览
0

我在我的一个模型类中有这种关系:

public function userLike()
{
    if (Auth::check()) return $this->hasOne('App\Like')->where('user_id', Auth::user()->id);

    // RETURN NULL IF RECORD DOESN'T EXIST?
}

如您所见,它会检查用户是否已登录并返回 Like 记录 . 但是,如果记录不存在,如何返回null?

我试过这个:

public function userLike()
{
    if (Auth::check()) return $this->hasOne('App\Like')->where('user_id', Auth::user()->id);

    return null;
}

但我得到错误:

local.ERROR:异常'Symfony \ Component \ Debug \ Exception \ FatalErrorException',在/ var / www / social / vendor / laravel / framework / src / Illuminate / Database中显示消息'在null上调用成员函数addEagerConstraints()' /Eloquent/Builder.php:680

作为一个附带问题,我这样做是对的吗?这是正确的做法还是有更好的方法?

2 回答

  • 1

    我不确定!但我认为有可能使用计数!当它返回0时,您知道没有记录,因此您可以返回null .

  • 0

    我不确定这是否正确 . 在您的模型中,您应该只声明您的关系:

    public function userLike()
    {
        return $this->hasOne('App\Like');
    }
    

    然后在一个控制器或其他东西你得到像你这样的用户:

    class LikesController extends Controller {
    
        public function getLike()
        {
            $like = null;
            if (Auth::check()) {
                $like = Like::where('user_id', Auth::user()->id)->first();
            }
        }
    }
    

    因此,我们有一个 getLike() 函数,可以从模型 Like 获取用户的类似信息,其中user_id等于经过身份验证的用户的id .

    希望能帮助到你!

相关问题