实施碳比较日期 (API)


public function searchresult (Request $request)
{
$keyword = $request->name;
$search = Mosque::where('name', 'LIKE',"%{$keyword}%" )
->whereHas('events')
->orWhereHas('activities')
->get();
return response()->json(['result' => $search]);    
}

模范清真寺

class Mosque extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'state_id',
'area_id',
'name',
'latitude',
'longitude',
'address',
'image',
'type',
'referral_code',
'phone_number_1',
'phone_number_2',
'deleted_at'
];
public function events()
{
return $this->hasMany('AppEvent');
}
public function activities()
{
return $this->hasMany('AppActivity');
}
}

这是我的搜索控制器。 关系是清真寺有许多事件和活动。 在活动和事件中,我有列开始日期和结束日期。我如何实施碳 将今天日期与开始日期进行比较,并将今天日期与结束日期进行比较,这将仅给出在开始日期和结束日期之间有事件和活动的清真寺的结果。谢谢

在你的whereHas()关系中,你可以提供这样的closure

可能的解决方案。

$search = Mosque::where('name', 'LIKE',"%{$keyword}%" )
->whereHas('events', function($query) {
query->where([
['start_date', '<=' Carbon::today()->format('Y-m-d')]
['end_date', '>=' Carbon::today()->format('Y-m-d')]
]);
})
->orWherehas('activities', function($query) {
query->where([
['start_date', '<=' Carbon::today()->format('Y-m-d')]
['end_date', '>=' Carbon::today()->format('Y-m-d')]
]);
})
->get();

请注意,start_dateend_date必须date or timestamps否则,如果它们是text则需要先对它们进行类型转换

最新更新