php - 实施碳比较日期(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('App\Event');
}
public function activities()
{
return $this->hasMany('App\Activity');
}
}
这是我的搜索控制器。关系是清真寺有许多事件和活动。在活动和事件中,我有列开始日期和结束日期。我如何实施碳以将今天的日期与开始日期进行比较,并将今天的日期与结束日期进行比较,这将只给出在开始日期和结束日期之间有事件和活动的清真寺的结果。谢谢
解决方案
在你的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_date
andend_date
必须是,date or timestamps
否则如果它们是,text
您需要先对它们进行类型转换
推荐阅读
- mysql - MySQL 返回一个空的结果集(即零行)。(查询耗时 0.0034 秒。)
- c# - 如何从 XmlNode 对象寻址子节点?
- c - 如何将输出 0/1 行更改为诸如作业/考试之类的名称
- terraform - Terraform如何获取aws_lb的IP地址
- c# - 如何读取 xamarin 表单中的通话记录
- wordpress - 获取自定义帖子类型的父分类
- c++ - 如何将此动态链接库链接到程序?
- android - InvalidUserDataException:解决后无法更改配置“:app:debugRuntimeClasspath”的策略
- java - 如何整合统一的横幅广告来扑动
- git - Git 在 Azure DevOps 中的 2 个存储库之间保持文件同步任务