Лучшее решение этого запроса - PullRequest
0 голосов
/ 05 ноября 2018
$query = $this->db->query("SELECT field_name FROM table_name;");

        $getData= array();

        foreach ($query->result() as $row) {

            array_push($getData, $row->field_name);
        }

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

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

http://php.net/manual/en/function.array-column.php отлично подойдет для этого.

$query = $this->db->query("SELECT field_name FROM table_name;");

$array = array_column($query, 'field_name');

print_r($array);

Ваш вопрос противоречит вашему коду. если вы просто хотите увидеть, существует ли конкретная запись, вы можете сделать:

$this->db->where('field_name', $var);
$exists = $this->db->count_all_results('table_name');
if ($exists > 0) {
    // update
    // there is an entry with $var for `field_name` in table `table_name`
} else {
    // insert
}
0 голосов
/ 05 ноября 2018

Непонятно, почему вы это делаете, но я бы назвал это "выравниванием" массива. Если вы обнаружите необходимость делать это часто, то может помочь создание «рабочего» метода.

Например, в модели у вас может быть два метода, которые оба требуют "плоских" результатов.

public function get_something()
{
    $query = $this->db->query("SELECT field_name FROM table_name;");
    //call the "worker"
    return $this->make_flat($query);
}

public function get_something_else()
{
    $query = $this->db->query("SELECT field_name FROM table_name;");
    //call the "worker"
    return $this->make_flat($query);
}

В других частях модели есть этот «рабочий» метод, использованный в приведенном выше коде.

// The "worker" method to flatten the results
protected function make_flat($query)
{
    $getData = []; //is same as $getData = array(); but with less typing
    foreach ($query->result() as $row)
    {
        $getData[] = $row->field_name;
    }
    return $getData;
}

Строка $getData[] = $row->field_name; делает то же самое, что и array_push($getData, $row->field_name);. Но на самом деле это немного быстрее. Это также меньше печатать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...