Я пытаюсь вызвать метод модели внутри той же модели и не работать должным образом. Вот мой класс с двумя методами, которые не работаютCodeigniter - вызов метода модели в пределах одной модели является ошибкой
class mymodel extends CI_Model{
public function __construct(){
parent::__construct();
$this->tablea = 'tablea';
$this->tableb = 'tableb';
}
public function saveData($data){
$dataCopy['revisionkey'] = $this->getRevisionKey($data['id']);
//check and condition revision key to be int with +1 from last one
$this->db->insert($this->tableb, $dataCopy);
$this->db->where('id', $id);
return $this->db->update($this->user_table, $data) ? true : false;
}
public function getRevisionKey($id){
$this->db->select($this->revision_tablea.'.revisions_number as revisions_number')
->from($this->revision_tablea)
->where($this->revision_tablea.'.id', $id)
->order_by($this->revision_table.'.revisions_number', 'asc')
->limit(1);
$query = $this->db->get();
if ($query->num_rows() > 0){
return $query->row_array();
}else{
return 0;
}
}
}
Теперь метод getRevisionKey()
должен произвести запрос, как следующий
SELECT `tableb`.`revisions_number` as revisions_number FROM (`tableb`) WHERE `tableb`.`id` = '26' ORDER BY `tableb`.`revisions_number` asc LIMIT 1
но он производит запрос, как следующий
SELECT `tableb`.`revisions_number` as revisions_number FROM (`tableb`) WHERE `id` = '26' AND `tableb`.`id` = '26' ORDER BY `tableb`.`revisions_number` asc LIMIT 1
опшена конечно, из-за того, что тот же метод вызывается внутри модели, этот метод работает отлично, если используется вне модели. Любое решение этой проблемы?
EDIT Переписывание getRevisionKey()
исправляет это. Вот новая версия
public function getRevisionKey($id){
$sqlQuery = $this->db->select($this->revision_tablea.'.revisions_number as revisions_number')
->from($this->revision_tablea)
->order_by($this->revision_table.'.revisions_number', 'asc')
->limit(1);
$query = $sqlQuery->where($this->revision_tablea.'.id', $id)->get();
if ($query->num_rows() > 0){
return $query->row_array();
}else{
return 0;
}
}
Вы используете 'getRevisionKey()' извне? Я имею в виду от любого контроллера? – Aniket
На мой взгляд, проблема заключается в том, что '$ this-> db-> где ('id', $ id);' в методе, указанном выше, мне кажется, что он добавляет дополнительный параметр в дополнение к функции, ниже которой правильно , –
@Aniket Я использую это в контроллере, и, как и ожидалось, он отлично работает. – Kumar