Для проекта в Symfony2 мне нужно иметь возможность сохранять/извлекать объекты, используя внешний RESTful API, а не базу данных. Поскольку Doctrine сопоставляет сущность с строкой таблицы базы данных, я думал, что также должно быть легко создать сопоставление с сущностью и внешним API. Однако это ново для меня, и я не могу найти никаких описаний/учебников об этом. (возможно, мне не хватает правильных слов для моего Google-fu)Сохраняющиеся объекты, использующие API REST
Я надеялся, что есть решение, подобное Доктрине. Я бы предпочел не использовать что-то, основанное на шаблоне ActiveRecord, потому что я хочу, чтобы логика устойчивости была отделена от сущностей. Сущность не должна знать, как она сохраняется.
Я хочу, чтобы иметь возможность сделать что-то похожее на это:
$entity = new Entity();
$em = $this->getREST()->getManager(); // get REST Entity Manager
$em->persist($entity); // save the entity using a POST request
$em->flush();
и это:
$em = $this->getREST()->getManager(); // get REST Entity Manager
// retrieve the entity using a GET request
$entity = $em->getRepository('AcmeDemoBundle:Entity')->find($id);
и это:
$em = $this->getREST()->getManager(); // get REST Entity Manager
// retrieve all entities using a GET request
$entities = $em->getRepository('AcmeDemoBundle:Entity')->findAll();
Другими словами, было бы хорошо, если синтаксис может быть почти идентичен доктрине.
Кроме того, я хотел бы настроить отображение во внешнем файле (например, YAML) вместо аннотаций в сущности. (Как я уже сказал, предприятия не должны знать, как они сохраняются)
Forgottenbas уже упоминал пару решений, но они не полностью удовлетворяют моим требованиям, и я ожидаю, что будет больше решений, так как Я уверен, что я не первый, кто должен решить эту проблему.
Может ли кто-нибудь указать мне в правильном направлении?
Спасибо. Оба решения для дребезга, похоже, идут в правильном направлении. Тем не менее, я хочу сохранить стойкость, отделенную от сущностей, точно так же, как использование самой Доктрины. Doctrine's drest использует шаблон Active Record, поэтому он слишком тесно связан. Второй треск выглядит как лучший вариант, но я надеюсь, что вместо аннотаций есть другие параметры конфигурации. –
@Nic Это должно быть принято как ответ. Все, что вы упомянули в своем Q, может быть достигнуто с помощью сериализатора jms. Вы можете перенести свои настройки в службу, чтобы сделать ее доступной, как диспетчер сущностей. –
Спасибо, но я не уверен, как это сделать. Могу ли я каким-то образом расширить Doctrine2, чтобы сохранить тот же синтаксис, но в то же время просто заменить логику БД логикой REST? –