$this->db->fetchAll("SELECT * FROM TABLE");
実際にはかなり簡単に達成できます。
application.ini または bootstrap.php でデータベース アダプターを既にセットアップしていると仮定します。アダプターをどこかに定義している限り、どちらでも構いません。
//simplified for demonstration
class SomeController extends Zend_Controller_Action
protected $db;
//items that are put into init() or predispatch() or similar function
//can usually be put into a frontcontroller plugin if needed app wide.
public function init() {
//this works as long as you have only one adapter defined or have set one as default.
$this->db = Zend_Db_Table::getDefaultAdapter();
}
public function indexAction() {
//with your db adapter defined you have access to the api for Zend_Db_Table_Abstract
$result = $this->db->fetchRow($sql);
//while a simple string will work as $sql I would
//recommend the select() be used if for not other reason then that
//the queries are built programatically
$select = $this->db->select();
$select->where('id = ?', $id)->orWhere('role = ?', 1); //selects can be chained or separated
$select->order('id','ASC');
$rows = $this->db->fetchAll($select);//returns rowset object, toArray() if needed.
}
}
ほとんどの人がZend_Dbを初めて使用するときに直面する最大の問題は、どの方法が最適かを判断することだと思います。このコンポーネントを使用するには多くの方法があり、ほとんどの人は気に入ったものを見つけて、あらゆる用途に使用しています。
たとえば、サンプル コードのように
、単純な SQL クエリをselect() オブジェクト$sql = "SELECT * FROM TABLE";
として文字列として表すことができます。Zend_Db_Exprを使用して、より複雑な式を表すことができます。また、 Zend_Db_Statementを忘れないでください(これは使用したことがないため、正しくデモできません)。
$select->where(new Zend_Db_Expr("FIND_IN_SET('$genre', genre)"));
必要に応じて、値と識別子を引用できます。
[編集]
前に述べたように、データベース アダプターを定義する必要があります。私は自分のapplication.iniでこれを行うことを好みますが、Bootstrap.phpもアダプターを定義する一般的な場所です。
application.iniに、少なくとも次の行があることを確認してください。
resources.db.adapter = "pdo_Mysql" //or your chosen adapter
resources.db.params.username = "username"
resources.db.params.password = "password"
resources.db.params.dbname = "dbname"
少なくとも、これがあなたの方向性を示してくれることを願っています。頑張ってください!