belongsTo('App\PersonalDetails','pd_id','pd_id'); } public function codeVehicleOwn() { return $this->hasOne('App\CodeVehicleOwn','vo_id','vo_id'); } public function codeCity() { return $this->hasOne('App\CodeCity','city_id','city_id'); } public function codeFuelType() { return $this->hasOne('App\CodeFuelType','fueltype_id','fueltype_id'); } public function codeCivilStatus() { return $this->hasOne('App\CodeCivilStatus','civilstatus_id','civilstatus_id'); } public function codeGender() { return $this->hasOne('App\CodeGender','gender_id','gender_id'); } public function codeCardType() { return $this->hasOne('App\CodeCardType','cardtype_id','cardtype_id'); } public function otpAttempts() { return $this->hasMany('App\OtpAttempts','lcard_id','lcard_id'); } public function scopeSort($query, $field, $order) { switch ($field) { case 'firstname': $query->leftJoin('personal_details', 'loyalty_card.pd_id', '=','personal_details.pd_id'); $query->orderBy('personal_details.firstname', $order); break; case 'lastname': $query->leftJoin('personal_details', 'loyalty_card.pd_id', '=','personal_details.pd_id'); $query->orderBy('personal_details.lastname', $order); break; case 'card_type': $query->leftJoin('code_card_type', 'loyalty_card.cardtype_id', '=','code_card_type.cardtype_id'); $query->orderBy('code_card_type.code', $order); break; case 'status': $query->orderBy('is_validated', $order); break; default: return $query->orderBy($field, $order); } } public function scopeNumberOfOTPAttempts($query) { $date_now = date('Y-m-d H:i:s'); $date_yesterday = date('Y-m-d H:i:s',strtotime('-24 hours',strtotime($date_now))); $query->leftJoin('otp_attempts', 'loyalty_card.lcard_id', '=','otp_attempts.lcard_id') ->whereBetween('otp_attempts.created_at',[$date_yesterday,$date_now]); } }