Symfony / Doctrine: проблема с $ this-> getRoute () -> getObject, только некоторые извлекаемые записи - PullRequest
1 голос
/ 06 февраля 2011

Стол сообщений:

id   name   content
 1   test1  generated from fixture
 2   test2  generated
 3   test3  generated
 4   post1  this is actual post
 5   post2  real

Маршрутизация:

post_show:
  url: /:name
  class: sfDoctrineRoute
  options: { model: Posts, type: object, allow_empty: true}
  param: { module: post, action: show, name:test1}

Использование $this->getRoute()->getObject(); в действии вернет объект штрафа для example.com/test1,example.com/test2, example.com/test3 не будет возвращать ничего для всех других запросов (например, example.com/post1).Что может быть причиной этого?

* Я считаю, что единственное различие между записями, которые возвращаются ( test records) и теми, которые не ( post )является то, что test записи были сгенерированы из моего прибора

1 Ответ

1 голос
/ 20 июля 2011

Посмотрите на мой пример:

routing.yml

book_list:
  url:      /api/books.:sf_format
  class:    sfDoctrineRoute
  options:  { model: Book, type: list, method: getActiveWithAuthor }
  param:    { module: book, action: list, sf_format: json }
  requirements:
    sf_format: (?:json|html)

actions.class.php

public function executeList(sfWebRequest $request) {
  $this->books = BookTable::getActiveWithAuthor($request->getGetParameters());
}

BookTable.class.php

public static function getActiveWithAuthor(array $parameters) {
  $bookQuery = BookQuery::create()
  ->addSelf()
  ->addAuthor();

  if(isset($parameters['date_from']))  
    $bookQuery->andWhere('b.updated_at > ?', $parameters['date_from']);
  return $bookQuery->execute();
}

Это просто пример, но он показывает, как это работает. Используйте тип: список, метод: yourQueryMethod и т. Д.

...