public function addAction()
{
$form = new AlbumForm();
$form->get('submit')->setValue('Add');
$request = $this->getRequest();
if ($request->isPost()) {
$album = new Album();
$form->setInputFilter($album->getInputFilter());
$form->setData(array_merge_recursive(
$request->getPost()->toArray(),
$request->getFiles()->toArray()
));
if ($form->isValid()) {
$album->exchangeArray($form->getData());
$this->getAlbumTable()->saveAlbum($album);
return $this->redirect()->toRoute('album');
}
}
return array('form' => $form);
}
// а вот из модели кусок
public function saveAlbum(Album $album)
{
$data = array(
'artist' => $album->artist,
'title' => $album->title,
);
$id = (int)$album->id;
if ($id == 0) {
$this->tableGateway->insert($data);
$id = $this->tableGateway->lastInsertValue;
} else {
if ($this->getAlbum($id)) {
$this->tableGateway->update($data, array('id' => $id));
} else {
throw new \Exception('Form id does not exist');
}
}
if( $album->image ){
rename($album->image['tmp_name'],'./public/img/album/'.$id.'.png' );
$imagine = new \Imagine\Gd\Imagine();
$imagine->open('./public/img/album/'.$id.'.png')
->thumbnail(new \Imagine\Image\Box(100, 100), \Imagine\Image\ImageInterface::THUMBNAIL_INSET)
->thumbnail(new \Imagine\Image\Box(40, 40), \Imagine\Image\ImageInterface::THUMBNAIL_OUTBOUND)
->save('./public/img/album/.thumb/'.$id.'.png')
;
}
}
Если вопрос про билдер SQL запросов, то это не про ORM же.Чем вот это
Удобнее вот этогоPHP:ORM->get('users')->where('pipirka') и т.д.
PHP:SELECT * FROM users и т.д.
Нет, это не ORM.Это ORM.
Тем, что в первом случае получаешь объекты конкретного типа (users) и заранее знаешь, какие поля в объекте user есть и можешь точно определить, где его можно исользовать, а где нет?Чем вот это ... Удобнее вот этого ...
Я вас понял, а можете вы что то показать, что вы используете?Тем, что в первом случае получаешь объекты конкретного типа (users) и заранее знаешь, какие поля в объекте user есть и можешь точно определить, где его можно исользовать, а где нет?
Когда делаешь просто запрос, ты не можешь точно знать, данные какого типа извлек и как с ними работать? Во всяком случае, когда за твой код возьмется другой человек, ему потребуется гораздо больше времени на отладку этой лапши.
Чем, например, отличается массив из таблицы users, от массива из таблицы companies? Да ни чем, пока не будет проведен дополнительный анализ.
А а я и не экранирую, у меня все запросы параметризированные, ну а на счёт чистоты кода, вы правы,Ну и в придачу экранирование параметров.
// Сохранение
$entity = new Pass();
$form = $this->createForm(new PassType(), $entity);
$form->submit($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
$session->getFlashBag()->set('info', sprintf('Pass "%s" created successfully', $entity->getId()));
return $this->redirect($this->generateUrl('pass_show', array(
'id' => $entity->getId()
)));
}
return $this->render(
'PassBundle:Pass:new.html.twig',
array(
'entity' => $entity,
'form' => $form->createView(),
)
);
// Получение
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository('PassBundle:Pass');
try {
$entity = $repository->findOneByPk($type, $id);
} catch (NoResultException $e) {
throw $this->createNotFoundException('Unable to find Pass entity.');
}
return array(
'entity' => $entity,
);
это как у ферарри минус - гоняет сволочь!Из не надуманных минусов - нельзя на лету(или скажите как) переключать режим загрузки объекта. То есть по умолчанию все грузится лениво,
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->createdAt = new \DateTime('now');
}