#laravel #eloquent
#laravel #красноречивый
Вопрос:
У меня есть 2 модели: клиент, подписка.
Отношение в модели Customer:
public function subscriptions()
{
return $this->belongsToMany('AppSubscription')
->withPivot('subscription_id', 'delivery_type')
->orderBy('end_date', 'DESC');
}
Запутался в моей проблеме: при выборе клиентов мне нужно выбирать только тех, у кого истекли все подписки (‘end_date’, ‘<=’, Carbon::today()) и клиентов без подписок.
Мой запрос:
public function customers_without_subscriptions()
{
$customers = Customer::
doesntHave('subscriptions')
->orWhereHas('subscriptions', function (Builder $query) {
$query->where('end_date', '<=', Carbon::today());
})
->orderBy('name', 'ASC')
->paginate(12);
Теперь выбираются все клиенты, у которых истекла хотя бы 1 подписка — это неверно!
Спасибо за внимание!
Комментарии:
1. Вы добавили
end_date
вdates
массивCustomer
модели?2. @БАБАК АШРАФИ, «end_date» является атрибутом модели подписки.