0

初心者の質問で申し訳ありませんが、単純なクエリと思われるものに苦労しています。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()')

結果が出ません。

何か案は?

4

2 に答える 2

2

入れない$this->getUser()->getGuardUser()->getId()でください''

于 2011-08-26T20:53:41.893 に答える
0

私はそれを理解しました。方法は次のとおりです(私は明らかに初心者です):

    $this->benefitss = Doctrine_Core::getTable('benefits')
    ->createQuery('b')
    ->leftJoin('b.Company c')
    ->Where('c.user_id = ?', $this->getUser()->getGuardUser()->getId())
    ->execute();      
于 2011-08-27T18:59:22.677 に答える