2017-03-08 6 views
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: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function addEagerConstraints() on null' in /var/www/social/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:680

を、私はこの権利をやっていますか?これを行う正しい方法ですか、それとも良い方法がありますか?

答えて

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と同じです。

希望すると助かります!