У меня проблема с построителем запросов Laravel 4, я хочу сделать повторно используемый метод
public function getData($where=array()) { // $where = array('city' => 'jakarta', 'age' => '25'); return User::where($where)->get(); // this will produce an error, because i think laravel didn't support it }
В CodeIgniter легко передать массив активной записи:
public function getData($where=array()) { $rs = $this->db->where($where)->from('user')->get(); return $rs->result(); } // it will produce : // SELECT * FROM user WHERE city = 'jakarta' AND age = '25'
Любая идея, как это сделать на построителе запросов Laravel 4? У меня есть googling, но не найти ответа. Спасибо, прежде.
Вы можете попробовать это (предположим, эта функция находится в вашей модели User
)
class User extends Eloquent { public static function getData($where = null) { $query = DB::table('User'); if(!is_null($where )) { foreach($where as $k => $v){ $query->where($k, $v); } } return $query->get(); } }
Введите, что =
необязательно. Назовите это как
$data = User::getData(array('first_name' => 'Jhon'));
$where[] = array( 'field' => 'city', 'operator' => '=', 'value' => 'jakarta' ); $where[] = array( 'field' => 'age', 'operator' => '=', 'value' => 25 ); $data = getData($where); public function getData($wheres = array()){ $query = User::query(); if(!empty($wheres)){ foreach($wheres as $where){ { $query = $query->where($where['field'], $where['operator'], $where['value']); } $result = $query->get(); } }