2011-08-26 52 views
0

对于初学者问题,我表示歉意,但我正在努力应该看起来应该是一个简单的查询。我可以在MySQL中完美运行它,但无法在我的symfony应用程序中使用它。从本质上讲,这是所有我想要做的事:Symfony和DQL语法

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并非所有用户都会根据我的用户定义有公司。

任何帮助这个可怜的初学者将不胜感激。 :)

更新11年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()') 

我没有得到任何结果。

任何想法?

回答

0

我明白了。这是如何(我明显是一个初学者):

$this->benefitss = Doctrine_Core::getTable('benefits') 
    ->createQuery('b') 
    ->leftJoin('b.Company c') 
    ->Where('c.user_id = ?', $this->getUser()->getGuardUser()->getId()) 
    ->execute();  
2

请勿将$this->getUser()->getGuardUser()->getId()放入''

+0

感谢您的response.Are你说去除Where和Where声明?如果是这样,那不会导致我所寻找的。 – Patrick

+0

请在原始问题中查看我的更新结果。 – Patrick

+0

@帕特里克:是的。 – scube