Laravel 5.5-从模型中获取数据,其中已实现模型在特定月份中没有数据

时间:2018-10-29 13:24:46

标签: php laravel

我正在尝试从特定模型中获取一些数据,而相关模型在当月没有数据。

类似

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'

现在我要获取当月所有没有客户的房屋

1 个答案:

答案 0 :(得分:1)

您可以像这样使用whereHas

House::whereHas('consumers' , function($query){
 $query->whereMonth('created_at' , '<>' , Carbon::now()->format('m'));
})->get();