我为初学者的问题道歉,但我正在努力解决似乎应该是一个简单的查询。我可以让它在 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()')
我没有得到任何结果。
有任何想法吗?