Symfony 1.4: Как ограничить результаты действия индекса только теми, которые вошли в систему - PullRequest
0 голосов
/ 22 августа 2011

Я заранее прошу прощения за этот новый вопрос, но я изо всех сил пытался найти правильный способ получения правильного результата.

У меня есть две таблицы:

sf_guard_user:
  Columns
    id
    name

recipe:
  Columns:
    id:
    user_id:
    name:
  relations:
    sf-guard_user: { local: user_id, foreign: id; foreign_alias: recipes }

Модуль рецептов, indexSuccess: В этой форме я хочу ограничить свои результаты только зарегистрированным пользователем.

Вот мой рецепт файла actions.class.php:

public function executeIndex(sfWebRequest $request)
{
$this->recipe = Doctrine_Core::getTable('recipe')
  ->createQuery('a')
  ->whereStatement: user_id = logged-in/posted user (this is where I'm struggling with the syntax... do I use a join statement? Or where statement?  ...I'm lost.  I can get the result I want in basic MySql, but not in DQL)
  ->execute();
}

Любая помощь очень ценится.

Ответы [ 3 ]

3 голосов
/ 23 августа 2011

более короткий путь будет:

public function executeIndex(sfWebRequest $request)
{
  $this->recipes = RecipeTable::getInstance()->findByUserId($this->getUser()->getId());
}
1 голос
/ 23 августа 2011

->where('user_id = ?', $this->getUser()->getGuardUser()->getId(););

0 голосов
/ 23 августа 2011

С помощью обоих респондентов я смог заставить его работать с помощью дополнительного метода в файле myUser.class.php. Вот как у меня это работает:

В следующем файле: проект >> приложения >> внешний интерфейс >> lib >> myUser.class.php

Я добавил этот метод:

public function getId()
{
  return $this->getGuardUser()->getId();
}

И в следующем файле: проект >> приложения >> внешний интерфейс >> модули >> рецепт >> действия >> actions.class.php

Я изменил действие executeIndex:

public function executeIndex(sfWebRequest $request)
{
  $this->recipes = RecipeTable::getInstance()->findByUserId($this->getUser()->getId());
}

Еще раз спасибо обоим респондентам.

...