实施碳比较日期(API)

时间:2018-10-04 07:37:34

标签: php laravel laravel-5

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');
    }
}

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

1 个答案:

答案 0 :(得分:1)

在您的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,则需要先进行打字