SQL-запрос в CodeIgniter - PullRequest
       2

SQL-запрос в CodeIgniter

0 голосов
/ 26 сентября 2018

У меня есть запрос в модели CI.Мне нужно сделать этот запрос коротким.Мне нужно получить первые пять названий строителей для каждого алфавита.Есть ли способ сделать его короче?

Модель

public function getBuilders() {        
    $query1 = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', 'a%')->limit('5')->get();
    $query2 = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', 'b%')->limit('5')->get();
    $query3 = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', 'c%')->limit('5')->get();
    $query4 = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', 'd%')->limit('5')->get();
    $query5 = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', 'e%')->limit('5')->get();
    $query6 = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', 'f%')->limit('5')->get();
    $result1 = $query1->result();
    $result2 = $query2->result();
    $result3 = $query3->result();
    $result4 = $query4->result();
    $result5 = $query5->result();
    $result6 = $query6->result();
    return array($result1, $result2, $result3, $result4, $result5, $result6); 
}

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Вы можете немного сократить код, сделав несколько обращений к модели.

в контроллере:

$initials = array('a','b','c','d','e','f');
foreach ($initials as $initial)
{
  $result = $this->model->getBuilders($initial);

  // here you do something with the data that's returned in $result
}

в модели:

public function getBuilders($initial)
{
$query = $this->db->select('builder_name')->from('builders_list')->where('builder_name like', $initial.'%')->limit('5')->get();
return $query->result();
}

Таким образом, для каждого инициала вы попадете в модель, которая вернет 5 результатов для этого инициала.Делайте с ними все, что вам нужно, и затем foreach будет переходить к следующему инициалу и продолжать работу до тех пор, пока не будет запрошен последний инициал.

0 голосов
/ 27 сентября 2018

Вы можете использовать.Подстановочный знак% после для%, а также других, которые вы хотите найти, вы можете использовать

$query1 = $this->db->select('builder_name')
         ->from('builders_list')
         ->like('name','a','after')
         ->or_like('name','b','after')
         ->or_like('name','c','after')
         ->or_like('name','d','after')
         ->or_like('name','e','after')
         ->or_like('name','f','after')
         ->limit(5)
         ->get();
return $query1->result();

Спасибо

0 голосов
/ 26 сентября 2018

Вы можете использовать следующий код:

$this->db->select('builder_name')
         ->from('builders_list')
         ->like('name','a%')
         ->or_like('name','b%')
         ->or_like('name','c%')
         ->or_like('name','d%')
         ->or_like('name','e%')
         ->or_like('name','f%')
         ->limit(5)
         ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...