2011-09-22 98 views
1

我正在開發一個使用zend框架的web應用程序,我想讓我的用戶可以使用zend fetchAll函數從其他用戶搜索。但是它的返回完整列,我只想要幾個值。這裏是我的示例代碼:fetchAll語句只返回一些列

$query=$table->select('id')->where("name LIKE ?",'%'.$str.'%')->limit(10); 
$model=new Application_Model_Users(); 
$rowset=$model->getDbTable()->fetchAll($query)->toArray(); 

我想只得到名稱和其他一些列。它返回所有列,包括密碼too.:p

回答

7
$select = $db->select(); 

$select->from('some_tbl', array('username' => 'name')); // SELECT name AS username FROM some_tbl 
$select->from('some_tbl', 'name');      // SELECT name FROM some_tbl 
$select->from('some_tbl', array('name'));    // SELECT name FROM some_tbl 

$select->from('some_tbl', '*'); // SELECT * FROM some_tbl 
$select->from('some_tbl');  // SELECT * FROM some_tbl 

// in case of joins, to disable column selection for a table 
$select->from('some_tbl', array()); 
+0

我發佈的列語法在工作Zend_Db_Table時更加簡單明瞭 –

1
// Create the Zend_Db_Select object 
$select = $db->select(); 

// Add a FROM clause 
$select->from(...specify table and columns...) 

// Add a WHERE clause 
$select->where(...specify search criteria...) 

// Add an ORDER BY clause 
$select->order(...specify sorting criteria...); 

Building Select queries - Zend Framework programming documentation

4

您可以添加columns調用只獲取特定列。在這種情況下,我們要求的ID和名稱列:

$columns = array('id', 'name'); 
$query = $table->select()->columns($columns)->where("name LIKE ?",'%'.$str.'%')->limit(10); 
+0

我認爲,這是正確的解決方案。 –