2014-03-01 89 views
0

我使用idiorm作爲一個ORM庫和方法as_array()不工作,這是我的代碼,我得到2個錯誤方法as_array()不工作

1- $市場= $市場 - > as_array();

PHP致命錯誤:調用一個成員函數as_array()非對象上

2- - > as_array();

PHP致命錯誤:非對象

我的代碼在調用一個成員函數as_array():

function ($market = 'affiliate', $category = array('all')) use ($app) { 
    $market = \ORM::for_table('category') 
     ->where('alias', $market) 
     ->find_one(); 
    $market = $market->as_array(); 
    $category = @end($category); 
    if ($category != 'all') { 
     $category = \ORM::for_table('category') 
      ->where('alias', $category) 
      ->where_gt('category_id', 0) 
      ->find_one() 
      ->as_array(); 
     $items = \ORM::for_table('item') 
      ->select('item.*') 
      ->select('category.name', 'category_name') 
      ->join('category', 'category.id = item.category_id') 
      ->where('item.category_id', $category['id']); 

回答

0

按照Idiorm docs

Any method chain that ends in find_one() will return either a single instance of the ORM class representing the database row you requested, or false if no matching record was found.

您應該檢查在調用as_array()之前查看您的查詢是否返回了任何行。

例如:

$market = \ORM::for_table('category') 
    ->where('alias', $market) 
    ->find_one(); 

if($market != false) 
{ 
    $market = $market->as_array(); 
} 

如果這仍然給出了一個錯誤,那麼你可能沒有正確初始化Idiorm。