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 回答