Symfony2 Vich Uploader Ошибка ограничения целостности

Я получаю ошибку здесь …

Возникла исключительная ситуация при выполнении ‘INSERT INTO users (image_name, updated_at, email, first_name, last_name, start_weight) VALUES (?,?,?,?,?,?)’ С параметрами [null, «2015-08-13 04: 52:18 «,» [email protected] «,» Рик «,» Мейсон «,» 200 «]:

SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец «имя-изображения» не может быть пустым

Это сущность ..

<?php
namespace AppBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;

/**
* @ORM\Entity
* @ORM\Table(name="users")
* @UniqueEntity("email", message="That email is already in use")
* @Vich\Uploadable
*/
class User
{

/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @Vich\UploadableField(mapping="profile_image", fileNameProperty="imageName")
* @var File
*/
private $imageFile;

/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $imageName;

/**
* @ORM\Column(type="datetime")
*
* @var \DateTime
*/
private $updatedAt;

/**
* @Assert\NotBlank()
* @Assert\Email(message="Must be a valid email.")
* @ORM\Column(type="string", length=50)
*/
private $email;

/**
* @Assert\NotBlank()
* @Assert\Regex("/^[a-zA-Z -']+$/")
* @ORM\Column(type="string", length=50)
*/
private $first_name;

/**
* @Assert\NotBlank()
* @Assert\Regex(pattern = "/^[a-zA-Z -']+$/", message="Name must be only letters.")
* @ORM\Column(type="string", length=50, unique=true)
*/
private $last_name;

/**
* @Assert\NotBlank()
* @Assert\Type(type="numeric")
* @Assert\GreaterThan(value=70)
* @ORM\Column(type="decimal")
*/
public $start_weight;

/**
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
*/
public function setImageFile(File $image = null) {
$this->imageFile = $image;
if ($image) {
$this->updatedAt = new \DateTime('now');
}
}

/**
* @return File
*/
public function getImageFile() {
return $this->imageFile;
}

/**
* @param string $imageName
*/
public function setImageName($imageName) {
$this->imageName = $imageName;
}

/**
* @return string
*/
public function getImageName(){
return $this->imageName;
}

public function getEmail()
{
return $this->email;
}

public function setEmail($email)
{
$this->email = $email;
return $this;
}

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set first_name
*
* @param string $firstName
* @return User
*/
public function setFirstName($firstName)
{
$this->first_name = $firstName;
return $this;
}

/**
* Get first_name
*
* @return string
*/
public function getFirstName()
{
return $this->first_name;
}

/**
* Set last_name
*
* @param string $lastName
* @return User
*/
public function setLastName($lastName)
{
$this->last_name = $lastName;
return $this;
}

/**
* Get last_name
*
* @return string
*/
public function getLastName()
{
return $this->last_name;
}

/**
* Set start_weight
*
* @param string $startWeight
* @return User
*/
public function setStartWeight($startWeight)
{
$this->start_weight = $startWeight;

return $this;
}

/**
* Get start_weight
*
* @return string
*/
public function getStartWeight()
{
return $this->start_weight;
}

public function __toString() {
return $this->start_weight;
}


}

Это тип формы

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

/**
*
*/
class UserType extends AbstractType
{

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('email', 'email', array('label' => "Your Email",
'attr' => array(
'placeholder' => 'Enter Email',
'class' => 'form-control')))
->add('first_name', 'text', array('label'=>'First Name',
'attr' => array(
'placeholder' => "Enter First Name",
'class' => 'form-control')))
->add('last_name', 'text', array('label'=>'Last Name',
'attr'=> array(
'placeholder' => "Your Last Name",
'class' => 'form-control')))
->add('start_weight', 'text', array('label' => "Your Current Weight",
'attr' => array(
'class' => "form-control",
'placeholder' => "Enter Weight")))
->add('imageFile', 'file')
->add('submit', 'submit', array('label' => "Sign Up!",
'attr' => array(
'class' => 'btn btn-md btn-primary')));
}

public function getName() {
return 'user';
}
}

Интересно, что у меня есть два отдельных проекта. Оба из них мудрый код, ТОЧНО ЖЕ. Код работает в одном проекте, а в другом — нет. У меня есть дампер в действии, я запускаю его на _FILES и получаю код ошибки 0, так что в этом нет ничего плохого. Загрузка на самом деле происходит. В ядре у меня есть umask (0000) в обоих случаях, поэтому я знаю, что у меня нет проблем с разрешениями.

Я не могу найти ничего относительно того, почему это происходит.

2

Решение

Одной из возможных причин этого может быть то, что слушатели VichUploaderBundle не работают. Вы пытались очистить кеш?

0

Другие решения

Я понимаю, что это старый вопрос, но он обнаруживается в поиске Google и кажется наиболее актуальным. Я думал, что смогу помочь любому, кто столкнется с этой проблемой тоже. Я бы добавил комментарий, но у меня нет репутации.

Оригинальный вопрос не включает в себя детали config.ymlПроверка конфигурации была ключом к решению проблемы для меня.

Сопоставление сущностей:

* @Vich\UploadableField(mapping="profile_image", fileNameProperty="imageName")

Необходимо иметь соответствующее отображение в config.yml

vich_uploader:
db_driver: orm
mappings:
profile_image:
uri_prefix: /profile/images
upload_destination: '%kernel.root_dir%/../web/profile/images'

Если вы следовали документация инструкции, которые вы могли бы настроить отображение в config.yml как product_image скорее, чем profile_image, Легко забыть обновить свое отображение, если вы решите изменить его для своей сущности.

0

По вопросам рекламы [email protected]