2016-11-02 4 views
0

Привет Я относительно новичок в Laravel и пытаюсь создать проверку подписки. Пожалуйста, не предлагайте кассиру, поскольку платежи будут использовать альтернативные методы, такие как биткойн.Laravel отношения/обработка подписки

У меня есть две модели модели пользователя и модель подписки.

В пользовательской модели у меня есть подписка на метод, которая возвращает отношение, которое у пользователя имеет одну подписку.

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

В подписной модели у меня есть метод, который возвращает пользователь отношений, что подписка принадлежит пользователю

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

Я теперь хочу вернуть статус в моем шаблоне лопастного ли ток дата заканчивается в конечной дате в таблице подписки. Я создал метод isSubscribed в модели подписки, чтобы вернуть текущую дату за конечную дату.

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

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

    return true; 
} 

В шаблоне лопастной я показываю данные, основанные на возвращает ли метод подписки пользователя истинным или ложным

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

Вопрос теперь у меня есть то, что если запись не существует для пользователь в подписке ее метание ошибки

вызова функции члена isSubscribed() на нуле

есть ли способ вернуть ложь, если записей не существуют для использования r в модели подписки, или я делаю это совершенно неправильно?

Извините, если это невероятный простой ответ, но я просмотрел документы и не могу найти что-либо.

ответ

0

Вы можете проверить, если коллекция пуста

Так Auth::user()->subscription->isEmpty()

возвращает истину, если нет подписок для текущего пользователя.

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

+0

Это не работает либо он просто бросает ошибку ниже 'Вызов неопределенной метод Осветите \ Database \ Query \ Builder :: IsEmpty()' И если я 'Auth :: user() -> subscription-> isEmpty() ' Он снова порождает нулевую ошибку – Paradigm

+0

На какой странице вы показываете это? Я предполагаю, что вам нужно войти в систему при просмотре этого, потому что, если вы можете просмотрите эту страницу как гость, которая, очевидно, не будет работать – Christophvh

+0

Это под промежуточным ПО Auth, поэтому вам нужно войти в систему vi это его. Если у меня есть запись в таблице Subscription для пользователя, она не бросает ошибку, она выдает ошибку только в том случае, если подписка не содержится в таблице. – Paradigm

Смежные вопросы