我正在尝试从特定模型中获取一些数据,而相关模型在当月没有数据。
类似
Select * FROM houses
JOIN customers
WHERE "there is no customer for the current month;
但是在Laravel中。
我尝试了多种方法,但无法解决问题。
我有一个house
表。
房屋桌子上有许多customers
。
现在,我想获得所有houses
,而本月没有customer
。
我尝试过类似的事情:
House::whereMonth('House.customers.created_at', Carbon::now()->format('m'))->get();
最适合我的解决方案是:
$houses= House::all();
$customers = Customer::whereNotExists(function($query) use ($houses){
$query->whereMonth('created_at', Carbon::now()->format('m'));
})->get();
有人有更清洁的方法吗?
SQL表结构:
客户:
'id', 'house_id', 'name', 'created_at','updated_at'
房屋:
'id', 'name', 'created_at','updated_at'
现在我要获取当月所有没有客户的房屋
答案 0 :(得分:1)
您可以像这样使用whereHas
House::whereHas('consumers' , function($query){
$query->whereMonth('created_at' , '<>' , Carbon::now()->format('m'));
})->get();