2017-08-03 71 views
0

我用ZF1 DB adapter,現在我正在學習ZF3,但我似乎無法找到等價的:ZF3:如何在ZF3中執行DB fetchRow()或fetchAll()或fetchCol()或fetchOne()?

$rows = $db->fetchAll('select * from `my_table`'); 
$row = $db->fetchRow('select * from `my_table` where `id` = 1'); 
$values = $db->fetchCol('select `my_col` from `my_table`'); 
$value = $db->fetchOne('select `my_col` from `my_table` where `id` = 1'); 

我ZF3中發現的例子提到了使用準備的語句。那麼如何在ZF3中的每一行中執行上述操作?

回答

1

一個字:沒了。現在您必須改爲處理ResultSet\ResultSetInterface接口。但它是一個迭代器。你一定不會有任何麻煩得到結果。

+0

一個側面說明對自己和別人看:通過使用'ResultSetInterface',它有一個有趣的功能來獲取所有的結果,就像這樣:'$結果= $適配器 - >查詢從我的代碼示例('SELECT * from users',Adapter :: QUERY_MODE_EXECUTE); $ users = $ result-> toArray();' – evilReiko

1

是的,它消失了。

您可以按照與ZF1相同的方式構建選擇。

// From Mapper that extends AbstractTableGateway 
// and implements AdapterAwareInterface 

$select = $this->getSql()->select() 
     ->join('articles', 'article_events.article_uuid = articles.article_uuid') 
     ->where(['articles.article_id' => $id]); 

$result = $this->selectWith($select); 

// $result; is fetchAll() 
// $result->current(); is fetchRow() or fetchOne() 
// $result->current()->col_name is fetchCol();