Использование $ this-> db-> get () -> row_array () в Codeigniter - PullRequest
2 голосов
/ 18 марта 2012

Я использую $this->db->get()->row_array() в Codeigniter, чтобы получить одну строку результатов из базы данных. Я хочу объединить результаты всех различных запросов в один массив $results; Поэтому я не хочу вводить имя столбца, чтобы получить результат одной строки ...

Код PHP

// Query 1
$results = array();
$this->db->select('COUNT(listing_id) as num')
        ->from('listings')
        ->where('city', $city);
$result = $this->db->get()->row_array();
$results['num'] = $result['num'];

Эти две строки ниже кажутся мне, что может быть более короткий способ написать это. Есть? Спасибо!

$result = $this->db->get()->row_array();
$results['num'] = $result['num'];

Желаемое решение

$results['num'] = first_element_of($this->db->get()->row_array()); будет здорово!

1 Ответ

3 голосов
/ 18 марта 2012

Не знаю codeigniter и никогда не работал с ним, но это может сработать

// Query 1
$results = array();
$this->db->select('COUNT(listing_id) as num')
        ->from('listings')
        ->where('city', $city);

$results['num'] = $this->db->get()->row()->num;

Хитрость в том, что вы можете связать доступ к элементу объекта. Вы не можете сделать это с массивами ($foo->row_array()['num']), так что проблема здесь. Если вы использовали старый добрый mysql, взгляните на mysql_result . Для этого не существует аналога mysqli.

В зависимости от возвращаемого значения где () вы можете попытаться сократить его до

$results = array('num' => 
    $this->db->select('COUNT(listing_id) as num')
        ->from('listings')
        ->where('city', $city)
        ->get()
        ->row()
        ->num
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...