2013-04-18 73 views
0

我有這2個代碼...在我的頭上,他們是相同的,但一個工作,一個不。希望有人能幫我弄清楚這一點。Zend 2 TableGateway的難題?

此代碼不起作用。它返回整個表格,忽略orderby和limit。

public function getNews($limit = null) 
{ 
    $select = new Select(); 

    $select->order('Date DESC'); 
    if($limit != null) 
    { 
     $select->limit($limit); 
    } 

    $result = $this->gateway->select($select); 
    return $result; 
} 

此代碼重新安排使用匿名函數,並完美工作。

public function getNews($limit = null) 
{ 
    $result = $this->gateway->select(
     function(Select $select) use ($limit) 
     { 
      $select->order('Date DESC'); 
      if($limit != null) 
      { 
       $select->limit($limit); 
      } 
     } 
    ); 

    return $result; 
} 

任何洞察力將不勝感激。

+0

iirc第二個函數應該返回一個select * n,因爲匿名函數不會返回任何東西 – Sam

+0

我不明白你的意思嗎?對於所有意圖和目的,這些都是相同的代碼片段。不工作的人不會拋出錯誤,它不會做任何事情。 – aserwin

回答

2

第二種方法是如何使用TableGateway::select方法。您可以將它傳遞給一個簡單的謂詞或一個Closure,然後在Select對象上執行更復雜的操作。

查看documentation on TableGateway瞭解更多詳情。

相關問題