Swi*_*m89 1 php laravel eloquent
我需要你的帮助!我有两个模型customer和membership。客户hasMany会员资格。我需要提取具有成员资格的所有客户active。我这样做了,但是它只提取成员身份,而没有客户数据。如何更改它以解决问题?
Membership::has("customer")
->forCompany($companyId)
->whereIn('state', ['ATTIVA', 'IN ATTESA DI ESITO', 'DA INVIARE'])
->where(function ($query) {
$query
->where('end_date', '>=', Carbon::now()->toDateString())
->orWhereNull('end_date');
})
Run Code Online (Sandbox Code Playgroud)
如果要customers获取具有成员资格的数据,则必须从Customers模型而不是Membership模型中编写查询。如果您希望向会员加载客户数据,则必须使用with()方法。
因此,这是您想要的查询:
$customers = Customer::whereHas("memberships",function($q) use ($companyId){
return $q->forCompany($companyId)
->whereIn('state', ['ATTIVA', 'IN ATTESA DI ESITO', 'DA INVIARE'])
->where(function ($query) {
$query->where('end_date', '>=', Carbon::now()->toDateString())
->orWhereNull('end_date');
});
})->with('memberships')->get();
Run Code Online (Sandbox Code Playgroud)
因此,您可以像这样访问每个客户的成员资格:
foreach($customers as $customer)
$memberships = $customer->memberships;
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记在Customer模型中定义membersips()方法。请记住,急于使用->with()方法将客户数据加载到成员资格中。并且不要忘记->get()在查询末尾使用。
在这里,您可以了解有关急切加载的信息。
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |