初心者の質問で申し訳ありませんが、単純なクエリと思われるものに苦労しています。MySQL では完全に動作するようにできますが、symfony アプリケーションでは動作しません。基本的に、これは私がやろうとしているすべてです:
SELECT *
FROM benefits b
WHERE b.company_id = X
X =
SELECT id
FROM company c
WHERE c.user_id = ($this->getUser()->getGuardUser()->getId())
多くの結合ステートメントを試しましたが、次のように、希望する結果で動作させることができません。
public function executeIndex(sfWebRequest $request)
{
$this->benefitss = Doctrine_Core::getTable('benefits')
->createQuery('b')
->where('user_id = ?', '$this->getUser()->getGuardUser()->getId()')
->leftJoin('b.Company c')
->andWhere('c.user_id = ?', '$this->getUser()->getGuardUser()->getId()')
->execute();
}
要約したスキーマは次のとおりです。
Benefits
columns
id
user_id
company_id
name
relations
User {class: sfGuardUser}
Company
Company
columns
id
user_id
name
relations
User {class: sfGuardUser}
sfGuardUser
columns
id
また、注意してください: ユーザーには company_id b/c が割り当てられていません。すべてのユーザーが私のユーザー定義に従って会社を持つわけではありません。
この惨めな初心者のための助けをいただければ幸いです。:)
2011 年 8 月 27 日更新:
これにより、私が望む結果が得られます。
$this->benefitss = Doctrine_Core::getTable('benefits')
->createQuery('b')
->leftJoin('b.Company c')
->Where('c.user_id = ?', '1')
->execute();
「1」は現在のユーザーの ID である必要があります。しかし、where句を次のように変更すると:
->Where('c.user_id = ?', '$this->getUser()->getGuardUser()->getId()')
結果が出ません。
何か案は?