Как получить Выберите максимальное значение в codeigniter - PullRequest
0 голосов
/ 09 мая 2018

Контроллер:

$next_id = $this->o->next_id();
$data['next_id']=$next_id;

Модель:

public function next_id(){
    $this->db->select_max('p_ori_id');
    $max = $this->db->get('orientation_master');
    if($max==0){
        $next_id = 1;
    }else{
        $next_id = 1+$max;
    }
    return $next_id;
}

Ошибка возврата:

Объект класса CI_DB_mysqli_result не может быть преобразован в int

Пожалуйста, решите проблему ..

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Надеюсь, это поможет вам:

public function next_id()
{
   $this->db->select_max('p_ori_id', 'max');
   $query = $this->db->get('orientation_master'); 
   // Produces: SELECT MAX(p_ori_id) as max FROM orientation_master
   $max = $query->row()->max;
   if($max == 0){
     $next_id = 1;
   }else{
     $next_id = $max+1;
  }
  return $next_id;
}

Для более: https://www.codeigniter.com/user_guide/database/query_builder.html

0 голосов
/ 09 мая 2018

Не обижайтесь на @pradeep, но у вас могут быть неожиданные результаты, если у вас нет строк. Я предлагаю:

public function next_id()
{
   $this->db->select_max('p_ori_id', 'max');
   $query = $this->db->get('orientation_master');
   if ($query->num_rows() == 0) {
      return 1;
   }
   $max = $query->row()->max;
   return $max == 0 ? 1 : $max + 1;
}
0 голосов
/ 09 мая 2018

Вы получаете эту ошибку, потому что $max является объектом набора результатов, а не целочисленным значением записи, как вы пытаетесь его использовать.

Вы можете попробовать эту функцию, чтобы получить следующий идентификатор.

Модифицированная функция:

public function next_id(){
    $this->db->select_max('p_ori_id', 'max');
    $result = $this->db->get('orientation_master');
    $row = $result->row_array();
    $next_id = isset($row['max']) ? ($row['max']+1) : 1;
    return $next_id;
}

Если столбец имеет автоинкремент, вы можете использовать приведенный ниже код.

Альтернатива:

public function next_id() {
        $sql_string = "SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = '".$this->db->dbprefix."orientation_master'";
        $query = $this->db->query($sql_string);
        $row = $query->row_array();
        return $row['auto_increment'];
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...