我遇到一些麻煩,當我得到我的表中的一個數據。Doctrine 1不會在CodeIgniter 2上正確返回數據數組
我正在使用Doctrine 1 + Codeigniter,問題是數據只獲取最後一個註冊表。
我沒有定義這個表之間的任何關係(OpModelos和AnSimNavTrans),這是風景:
控制器:
class Modelos extends CI_Controller {
public function view($idModelo) {
$aData['site_description'] = 'AutoDato';
$aData['site_keywords'] = 'keywords';
$aData['site_robots'] = 'robots';
$aData['site_author'] = 'author';
$modelo = Doctrine::getTable('OpModelo')->find($idModelo);
$modelo_caract = Doctrine::getTable('anCaractUserMo')->getByModeloId($idModelo);
$modelos_similares_nav = Doctrine::getTable('OpModelo')->getModeloSimNav($idModelo);
$aData['modelo'] = $modelo;
$aData['modelo_caract'] = $modelo_caract;
$aData['modelos_similares_nav'] = $modelos_similares_nav;
$aData['view'] = 'modelo/view';
$this->load->view('template', $aData);
}
}
數據表AnSimNavTrans
op_modelo_id cod_mod med_sim
1 10 0.9
1 2 0.8
1 11 0.7
1 4 0.5
1 6 0.1
型號
class OpModeloTable extends Doctrine_Table {
public function getModeloSimNav($idModelo) {
$query = Doctrine_Query::create();
$query->from('AnSimNavTrans');
$query->where('op_modelo_id = ?', $idModelo);
$query->orderBy('med_sim DESC');
$query->limit('3');
$result = $query->execute();
return $result->toArray();
}
}
查看:
print_r($modelos_similares_nav);
Array ([0] => Array ([op_modelo_id] => 1 [cod_mod] => 11 [med_sim] => 0.7))
正如你可以在視圖中看到,當我查詢的陣列,這隻能說明過去的記錄。
這有什麼問題嗎?
第一:我覺得'OpModeloTable-> getModeloSimNav'查詢'AnSimNavTrans'讓我感到很奇怪。爲什麼不使用'AnSimNavTransTable'來做到這一點?第二:如果你想要一個數組,用數組來代替使用'toArray':'$ result = $ query-> execute(array(),Doctrine_Core :: HYDRATE_ARRAY);'。測試這最後一件事。 – j0k 2013-02-15 08:29:19
我<你3! 您的解決方案完美運行,但是,爲什麼?我不明白爲什麼當我執行查詢時,這返回值沒有問題,但是,我的代碼只顯示查詢的最後記錄? 現在,尊重第一個問題,在作出調整後,我將查詢改爲AnSumNavTransTable :) 感謝您的幫助:) – 2013-02-16 14:46:16
所以我會將它作爲答案發布。但我不知道爲什麼你的解決方案無法正常工作。 – j0k 2013-02-17 08:59:41