Я использую Laravel Billable, и я подключил его к другой модели (клиенту), и все работает нормально. Однако я пытаюсь получить все записи в модели, где дата окончания подписки равна нулю. Я делаю следующее;
$collection = Model::where('client.subscriptions', function ($q) {
$q->where('ends_at', NULL);
})->get();
Я получаю следующую ошибку:
Неопределенная таблица: 7 ОШИБКА: отсутствует запись FROM-предложения для таблицы «клиент» СТРОКА 1: выберите * из «таблицы», где «клиент». «подписки» =... ^ (SQL: выберите * из «таблицы», где «клиент "."subscriptions" = (выберите *, где "ends_at" равно null))
Обновлять
Обновление кода
$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');
}
Модель работы
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();
Я все еще получаю записи, в которых подписка end_at не равна нулю. Любые идеи, что я делаю неправильно?