首页 > 解决方案 > 实施碳比较日期(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');
    }
}

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

标签: phplaravellaravel-5

解决方案


在你的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_dateandend_date必须是,date or timestamps否则如果它们是,text您需要先对它们进行类型转换


推荐阅读