Получение данных в Symfony с использованием класса модели - PullRequest
3 голосов
/ 15 февраля 2011

Допустим, у меня есть модель Ecosystem, автоматически сгенерированная с помощью symfony из моего schema.yml.В какой-то момент кода я хотел бы получить записи из таблицы.

Я знаю, что есть несколько способов сделать это с помощью классов Doctrine / Propel, но есть ли способ сделать это непосредственно с помощьюмодель?Я думал о чем-то вроде этого:

$ecosystem = new Ecosystem();
$records = $ecosystem->find(...);

Кстати, какой метод предпочтительней для такого рода вещей?

Я разрабатывал с CakePHP и делалзапросы напрямую с Doctrine не кажутся мне естественными.Что если я решу перейти на Propel завтра?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 16 февраля 2011

Предположим, ваша модель Ecosystem. Доктрина автоматически генерирует для вас два модельных класса:

  1. Ecosystem (определено в Ecosystem.class.php) - объекты этого класса являются действительными ecosystem сущностями
  2. EcoSystemTable (определено в EcosystemTable.class.php) - одноэлементный класс для обеспечения управления над Ecosystem сущностями

Вот почему все функциональные возможности управления объектами выполняются с *Table классами. Как их получить?

Doctrine::getTable('Ecosystem')

или

Doctrine_Core::getTable('Ecosystem')

или

EcosystemTable::getInstance()

или

$obj->getTable(); // where $obj is instance of Doctrine_Record

Дополнительная информация:

1 голос
/ 15 февраля 2011

Конечно, вы можете сделать это, только вы * Методы класса таблицы, например: $ record = Doctrine :: getTable ('Ecosystem') -> find (1) вернет запись с id = 1. Вы можете прочитатьподробнее о доступных средствах поиска здесь: http://www.doctrine -project.org / Documentation / manual / 1_0 / en / dql-doctrine-query-language: magic-finders Я думаю, что вы можете безопасно уйти без написания вручную DQLзапросы, если вы не заботитесь о производительности.

...