Я использую Laravel Billable, и я подключил его к другой модели (клиент), и все работает отлично. Однако я пытаюсь получить все записи в модели, в которой дата окончания подписки равна нулю. Я делаю следующее:
$collection = Model::where('client.subscriptions', function ($q) {
$q->where('ends_at', NULL);
})->get();
Я получаю следующую ошибку:
Неопределенная таблица: 7 ОШИБКА: отсутствует запись предложения FROM для таблицы «клиент»
ЛИНИЯ 1: выберите * из "таблицы", где "клиент". "Подписки" = ... ^
(SQL: выберите * из "таблицы", где "клиент". "Подписки" = (выберите *
где "заканчивается_соль" равно нулю))
Обновление
Обновление кода
$jobs = \App\Models\Job::with(['client' => function($query) {
$query->whereHas('subscriptions', function ($query){
$query->where('ends_at', NULL);
});
}])->get();
Пример базы данных
(model) Job (db:name = 'jobs')
id | client_id | name
(model) Client (db:name = 'clients')
id | name
(model) Subscription (db:name = 'subscriptions')
id | client_id | stripe_plan | trial_ends_at | ends_at
Модель клиента
/**
* Get all of the subscriptions for the Stripe model.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function subscriptions()
{
// foreign key is client_id
return $this->hasMany(Subscription::class, $this->getForeignKey())->orderBy('created_at', 'desc');
}
Job Model
public function client()
{
return $this->belongsTo(Client::class);
}
Теперь с помощью этого запроса;
$jobs = \App\Models\Job::with(['client' => function($query) {
$query->whereHas('subscriptions', function ($query){
$query->where('ends_at', NULL);
});
}])->get();
Я все еще получаю записи, в которых подписка заканчивается_пустую. Есть идеи, что я делаю не так?