2

私はmysqlで単純な左のクエリを持っています

SELECT sp. * , p.name, p.date_created
FROM subpages sp
LEFT JOIN pages p ON p.id = sp.page_id

zend フレームワークからこのクエリを実行する方法がわかりません。

Zend_Db_Table_Abstract を拡張する DbTable ページにアクセスするマッパー ページがあります。私はいくつかの記事を読んだので、マッパーからのステートメントは次のようになるはずです

$select = $this -> DbTable() -> select();
$select -> joinleft(..... This is what I dont know how to write....);
$results = $this -> DbTable() -> fetchAll($select);
if($results) { return $result; }

記事で$select -> from()は、私の心が行き詰まっているところ、なぜいつ書く必要があるのか​​ が使用$select -> from("subpages")されていました。これは、DbTableページで既に定義されています。

結合ステートメントを正しく記述する方法は?

4

2 に答える 2

1

投稿したクエリから、次を使用できます

 (You have not mentioned table name for ailas 'mi' so I have taken it as 'your_table_name' )

$select = $this -> DbTable() -> select()->from(array("your_table_name" => 'mi');
$select -> joinleft(array("pages" => 'p'),"p.id = mi.page_id");
$results = $this -> DbTable() -> fetchAll($select);
if($results) { return $result; }

Hope it will work for you mrN.
于 2011-09-27T05:44:41.990 に答える
1

複数のテーブルで select を使用する場合は、オブジェクトであるtable adapterから取得する必要がZend_Dbあります (メソッドでテーブルを指定する必要がありますfrom())。

したがって、次のようなものが必要になります。

$select = $this->DbTable()->getAdapter()->select();
$select->from(array("mi" => "tableName"));
$select->joinLeft(array("p" => "pages"), "p.id = mi.page_id");
(etc)

それが役立つことを願って、

于 2011-09-27T07:57:03.237 に答える