この質問を投稿する前に、SOで罰金を科すことができるすべての回答を読みました。同様ですが、私の特定の問題に対処したものはありませんでした(または、そうしていることに気づきませんでした)。
Zend_Db_Table_Abstractを拡張するテーブルクラスがあります。モデルでは、join()メソッドを使用し、次のようなテーブルIDに基づいて単一の行を返そうとしています。
$getCategoryResults = $this->select();
$getCategoryResults->setIntegrityCheck(false)
->from(array('c'=> 'categories', '*'))
->join(array('e' => 'events'),'c.events_idEvent = e.idEvent', array())
->where("e.idEvent = ?", $idEvent);
SQLオブジェクトをエコーすると、次のようになります。
SELECT `c`.* FROM `categories` AS `c`
INNER JOIN `events` AS `e` ON c.events_idEvent = e.idEvent
WHERE (e.idEvent = '1')
奇妙なことに、この形式を使用すると、
->where("e.idEvent = $idEvent");
私の出力は「WHERE(e.idEvent = 1)」です。値は目盛りで囲まれていませんが、どちらもMySQLで機能するようです。phpMyAdminでクエリを実行すると、次のようになります。
idCategoryタイプdisplayOrder説明localStartTimeevents_idEvent1
個人15k実行/ウォーク2010-02-1823 :59:5912チーム25k
チームカテゴリ2010-02-1823:59:591 1
それは私が見たいと思っていたものです。しかし、ブラウザでアプリを実行すると、次のような醜さが発生します。
SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。
c
1行目の「SELECT 。* FROMAS INNER JOINcategories
AS ON c.events_id」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。c
events
e
考えられるすべてのリソースを確認しました。うまくいけば、SO超専門家の組み合わせの素晴らしさがこれを私の最後の目的地にするでしょう。:D