我正在使用Laravel Billable,并将其连接到其他模型(客户端),并且一切正常。但是,我试图获取订阅结束日期为null的模型上的所有记录。我正在执行以下操作;
$collection = Model::where('client.subscriptions', function ($q) {
$q->where('ends_at', NULL);
})->get();
我收到以下错误:
未定义的表:7错误:表“ client”的缺少FROM子句条目 第1行:从“表格”中选择*,其中“客户”。“订阅” = ... ^ (SQL:从“表”中选择*,其中“客户端”。“订阅” =(选择* 其中“ 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();
我仍然获得预订ends_at不为空的记录。有什么想法我做错了吗?
答案 0 :(得分:0)
如果您使用的是Illuminate \ Database \ Eloquent命名空间中定义的基本Model类,那么我错了。
您应该直接使用模型(在您的问题/代码中似乎被称为“客户端”)并执行以下操作:
ids = ['rex', 'test']
pwds = ['rex', 'test']
def user():
adding_username = raw_input('username: ')
adding_password = raw_input('password: ')
ids.append(adding_username)
pwds.append(adding_password)
print('\nadded: {}:{}'.format(adding_username, adding_password))
user()
答案 1 :(得分:0)
正确的查询是;
$jobs = Job::whereHas('client', function($query) {
$query->whereHas('subscriptions', function ($query) {
$query->where('ends_at', NULL);
});
})->get();