А в чем суть вопроса? Хочешь, получить разрешение? Или хочешь узнать, как это сделать в Symfony?
Так в sf2 нет моделей. Каждый сам решает, как ему работать с базой данных?
А в чем суть вопроса? Хочешь, получить разрешение? Или хочешь узнать, как это сделать в Symfony?
Так в sf2 нет моделей. Каждый сам решает, как ему работать с базой данных?
webplus, ты какую логику-то хочешь вынести?)
Вот тебе логика в модели:
PHP:
public function getRegularEvents()
{
foreach ($this->getEvents() as $event) {
if ($event->isRegular()) {
yield $event;
}
}
}
Ты пример покажи, чего хочешь, а мы тебе подскажем. Напримем взаимодействие с базой прямое у тебя в модели не получится, зато можно его описать в репозитории.
Я хочу создать модель, и в ней реализовать операцию с таблицей, например сохранение.
Код:
class Model
{
function save()
{
$category = new Test1();
$category->setName('Main Products');
$em = $this->getDoctrine()->getManager();
$em->persist($category);
$em->flush();
}
}
Затем в контролере:
Код:
class DefaultController extends Controller
{
public function indexAction($name)
{
$model = new Model();
$model->save();
}
}
Для чего я это хочу сделать, для того если у меня в разных Экшенах(Action) будет повторятся логика, чтоб мне каждый раз не писать логику, а просто вызывать из модели функцию
webplus, это ты не в Symfony хочешь логику базы данных. Это ты хочешь реализацию паттерна ActiveRecord.
Такой реализацией может являться библиотека Propel
А то был один товарищ, который хотел доктрину как AR использовать, а контейнер как Yii::app() и после того сильно матерился.
Сначала стоит изучить матчасть, понять свои задачи а потом уже браться.
Тогда не будет глупых вопросов.
<?php
class Model
{
private $id;
private $name;
public function __construct($name)
{
$this->setName($name);
}
public function getId()
{
return $this->id;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
class AppContoller extends Controller
{
protected function saveEntity($object)
{
$om = $this->getDoctrine()->getManager();
$om->persist($object);
$om->flush();
}
protected jsonResponse($data)
{
return new JsonResponse($data);
}
}
class DefaultController extends \AppController
{
public function indexAction($name)
{
$model = new Model($name);
$this->saveEntity($model);
return $this->jsonResponse(['id' => $name->getId()])
}
}