zend fraworkでクエリを実行する必要があります。クエリは以下のとおりです。zend FrameworkのFetchList()が機能しない
select * from users where role_id in (3,5) and emailID not in ('[email protected]', '[email protected]');
私は
$this->fetchList($whereString) // where $this is object of users
に文字列に
$whereString = role_id in (3,5) and emailID not in ('[email protected]', '[email protected]');
を渡しています。しかしfetchList()関数はemailID not in ('[email protected]', '[email protected]');
すなわちrole_id in (3,5)
ではなく、第二部、すなわち、最初の部分のみを実行
fetchList()が含ま '[email protected]' と '[email protected]'
fetchList()の結果である:
public function fetchList($where=null, $order=null, $count=null, $offset=null)
{
$resultSet = $this->getDbTable()->fetchAll($where, $order, $count, $offset);
$entries = array();
foreach ($resultSet as $row)
{
$entry = new Application_Model_Users();
$entry->setId($row->id)
->setName($row->name)
->setEmail($row->email)
$entries[] = $entry;
}
return $entries;
}
はfetchAll():
/**
* Fetches all rows.
*
* Honors the Zend_Db_Adapter fetch mode.
*
* @param string|array|Zend_Db_Table_Select $where OPTIONAL An SQL WHERE clause or Zend_Db_Table_Select object.
* @param string|array $order OPTIONAL An SQL ORDER clause.
* @param int $count OPTIONAL An SQL LIMIT count.
* @param int $offset OPTIONAL An SQL LIMIT offset.
* @return Zend_Db_Table_Rowset_Abstract The row results per the Zend_Db_Adapter fetch mode.
*/
public function fetchAll($where = null, $order = null, $count = null, $offset = null)
{
if (!($where instanceof Zend_Db_Table_Select)) {
$select = $this->select();
if ($where !== null) {
$this->_where($select, $where);
}
if ($order !== null) {
$this->_order($select, $order);
}
if ($count !== null || $offset !== null) {
$select->limit($count, $offset);
}
} else {
$select = $where;
}
print_r($select);
$rows = $this->_fetch($select);
$data = array(
'table' => $this,
'data' => $rows,
'readOnly' => $select->isReadOnly(),
'rowClass' => $this->getRowClass(),
'stored' => true
);
$rowsetClass = $this->getRowsetClass();
if (!class_exists($rowsetClass)) {
require_once 'Zend/Loader.php';
Zend_Loader::loadClass($rowsetClass);
}
return new $rowsetClass($data);
}
私は何が何をしたのか分かっています。
'fetchList()'とは何ですか? – drew010
@ drew010が更新しました。 – naquiuddin
をチェックしてください。唯一違うところは、$ whereStringは適切に引用されたPHP文字列ではありませんが、これは質問のプレゼンテーションの理由によるものかもしれません。あなたはZend_Db_Selectのインスタンスを渡そうとしましたか? – RockyFord