[英]Codeigniter WanWizard DataMapper all_to_array error?
使用WanWizard的DataMapper 1.8.2時出現問題。 我想在get()之后得到一組結果。 下面的代碼片段顯示了我如何做到這一點與我希望做到的程度,以及據文檔所聲稱的應該做到這一點。
$arr = $loc->get();
// THIS WORKS
// $results = array();
// foreach($arr as $item) {
// $results[] = $item->stored;
// }
$results = $arr->all_to_array(); // THIS DOES NOT WORK
$results = $loc->all_to_array(); // THIS ALSO DOES NOT WORK
當我使用“ $ results = $ arr-> all_to_array();”時 調用時,將引發異常。 這是syslog中的異常輸出:
PHP Fatal error: Uncaught exception 'Exception' with message 'Unable to call the method "all_to_array" on the class Location' in /var/www/imhere/application/libraries/datamapper.php:1188\nStack trace:\n#0 /var/www/imhere/application/controllers/locations.php(66): DataMapper->__call('all_to_array', Array)\n#1 /var/www/imhere/application/controllers/locations.php(66): Location->all_to_array()\n#2 [internal function]: Locations->index_get()\n#3 /var/www/imhere/application/libraries/REST_Controller.php(424): call_user_func_array(Array, Array)\n#4 /var/www/imhere/application/libraries/REST_Controller.php(411): REST_Controller->_fire_method(Array, Array)\n#5 /var/www/imhere/system/core/CodeIgniter.php(325): REST_Controller->_remap('index', Array)\n#6 /var/www/imhere/index.php(208): require_once('/var/www/imhere...')\n#7 {main}\n thrown in /var/www/imhere/application/libraries/datamapper.php on line 1188
還有其他人處理過嗎?
其次,我要使用all_to_array方法的原因是我正在使用帶有別名的select函數,但是當我使用$ item-> stored時卻沒有顯示。 使用all_to_array返回的值不是顯式數據庫列嗎?
您需要確保已加載array
擴展: http : //datamapper.wanwizard.eu/pages/extensions.html
您可以在DataMapper配置文件中全局執行此操作:
$config['extensions'] = array('array');
或在模型本身上:
class Location extends DataMapper {
var $extensions = array('array');
// ...
}
或在運行時動態地:
$location = new Location();
$location->load_extension('array');
$results = $location->get()->all_to_array();
那將消除錯誤!
要回答第二個問題:您實際上不需要訪問stored
屬性,也不需要將結果作為數組返回。 使用面向對象的編程! :)
實現目標的最佳方法是將結果保留為對象,然后在遍歷它們時,只需調用您要使用的屬性即可。 然后,您可以使代碼保持整潔:
$locations = new Location();
$locations->get();
foreach( $locations as $location ) {
echo $location->property;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.