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