2016-11-02 11 views
0

こんにちは、私はララベルに比較的新しく、サブスクリプションチェッカーを作成しようとしています。支払いはビットコインなどの代替方法を使用するため、キャッシャーを提案しないでください。ララベルの関係/サブスクリプションの取り扱い

ユーザーモデルとサブスクリプションモデルの2つのモデルがあります。

ユーザーモデルでは、ユーザーに1つのサブスクリプションがあるという関係を返すメソッドサブスクリプションがあります。私は、サブスクリプションは、私が今現在のかどうか、私のブレードのテンプレートにステータスを返すように望んだ

public function user() 
{ 
    return $this->belongsTo(User::Class); 
} 

ユーザーに属するという関係を返すユーザーメソッドを持つサブスクリプションモデルで

public function subscription() 
{ 
    return $this->hasOne(Subscription::Class); 
} 

dateはサブスクリプションテーブルの終了日を過ぎています。サブスクリプションモデルでisSubscribedメソッドを作成して、現在の日付が終了日を過ぎているかどうかを返します。私は、ユーザーの購読方法は、私が今持っている

  @if(Auth::user()->subscription->isSubscribed()) 
       You're subscribed 
      @else 
       You're not subscribed 
      @endif 

真または偽の問題があれば、レコードが存在しないということである返すかどうかに基づいてデータを示していブレードテンプレートで

public function isSubscribed() 
{ 
    $now = Carbon::now(); 

    if ($now->gt($this->enddate)) 
    { 
    return false; 
    } 

    return true; 
} 

サブスクリプションでのユーザーのヌル

上メンバ関数isSubscribed()に

コールのエラーを投げレコードが使用するために存在しない場合はfalseを返す方法はありますrをサブスクリプションモデルで使用しているのですか、まったく間違った方法で行っていますか?

謝罪これは信じられないほどの簡単な答えですが、私は書類を精査して何も見つけられないようです。

答えて

0

コレクションが現在のユーザーのサブスクリプションがないのであればAuth::user()->subscription->isEmpty()

はtrueを返します

空であるかどうかを確認できます。どちらかそれだけで以下のエラーがスローされます `未定義のメソッドを照らし\ Databaseへのコール\クエリー\ビルダー::のisEmpty()` そして、私は `認証を行う場合は動作しません

https://laravel.com/docs/5.3/collections#method-isempty

+0

もう一度nullエラーを表示します – Paradigm

+0

どのページにこれを表示していますか?これを表示するには、ログインする必要があると仮定しています。そのページを明らかに動作しないゲストとして表示する – Christophvh

+0

これはAuthミドルウェアの下にあるので、viにログインする必要がありますそれをしてください。ユーザーのサブスクリプションテーブルにレコードがある場合は、エラーをスローしません。サブスクリプションがテーブルにない場合は、エラーが発生します。 – Paradigm