php - How properly select data from DB according to filter in Eloquent? -
i have filter.
filter contains 3 fields. call_date_from
, call_date_till
, telephone
.
so need select leads
(lead model) table rows fit filter.
in raw php + mysql write this:
$sql = ' '; $post['call_date_from'] ? $sql .= ' `call_date` >= ' . $post['call_date_from']; $post['call_date_till'] ? $sql .= ' , `call_date` <= ' . $post['call_date_till']; $post['telephone'] ? $sql .= ' , `telephone` %' . $post['telephone'] . '%'; mysql: 'select * leads' . $sql;
so how same in laravel eloquent?
this how can filter in laravel eloquent using query scope.
in model
class lead extends model { public function scopecalldatefrom($query, $date) { if ($date) { return $query->where("call_date", ">=", $date); } else{ return $query; } } public function scopecalldatetill($query, $date) { if ($date) { return $query->where("call_date", "<=", $date); } else{ return $query; } } public function scopetelephone($query, $telephone) { if ($telephone) { return $query->where("telephone", "like", "%$telephone%"); } else{ return $query; } } }
in controller
public index() { $posts = lead::calldatefrom(input::get('call_date_from')) ->calldatetill(input::get('call_date_till')) ->telephone(input::get('telephone')) ->orderby('created_at', 'desc') ->paginate(); }
Comments
Post a Comment