我有以下情况。 Employer
模型有一个名为商品的方法:
public function offers()
{
$offers = $this->hasMany(Offer::class)
->join('employers', 'offers.employer_id', '=', 'employers.id')
->join('recruiting_events', 'recruiting_events.id', '=', 'offers.recruiting_event_id');
switch (request()->input('show')) {
case 'future':
$offers->where('recruiting_events.date', '<', DB::raw('NOW()'));
break;
case 'current':
default:
$offers->where('recruiting_events.date', '>=', DB::raw('NOW()'));
break;
}
return $offers;
}
检查请求是否显示参数并根据它过滤数据。到目前为止,非常好 - Employer::find(1)->offers
完美无缺。
但是,如果我想让所有有优惠的雇主得到一个SQL错误:
Employer::whereHas('offers')->get();
未找到列:1054未知列&#39; web_recruiting_events.date&#39;在&#39; where子句&#39; (SQL:选择count(*)作为
web_employers
中存在的聚合(选择*来自web_galleries
其中web_galleries
。galleriable_id
=web_employers
。{{1} }和id
。web_galleries
= App \ Models \ Employer)并存在(从galleriable_type
中选择*web_offers
。web_offers
=employer_id
。web_employers
和id
。web_recruiting_events
&lt; NOW()和date
。web_offers
为空))
为什么它不执行deleted_at
子句,但join
可以吗?