Я прошу прощения за вопрос новичка, но я борюсь с тем, что кажется простым запросом.Я могу заставить его работать отлично в 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, потому что не все пользователи будут иметь компании в соответствии с моими определениями пользователей.
Любая помощь для этого убогого новичка будет высоко ценится.:)
Обновление от 27.08.11:
Получает желаемые результаты:
$this->benefitss = Doctrine_Core::getTable('benefits')
->createQuery('b')
->leftJoin('b.Company c')
->Where('c.user_id = ?', '1')
->execute();
Где «1» должно быть идентификатором текущего пользователя.Но когда я изменяю предложение where на:
->Where('c.user_id = ?', '$this->getUser()->getGuardUser()->getId()')
, я не получаю результатов.
Есть идеи?