Я эту форму:форма с полем объекта, сохраняются в базе данных редкой строки
<?php
namespace FEB\TwitterBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class TwitterpostType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('titulo')
->add('tweet', 'textarea')
->add('photo', 'file', array('required' => false))
->add('tags', 'entity', array(
'class' => 'FEBTagsBundle:tag',
'property' => 'tag',
'empty_value' => 'Selecciona tags',
'multiple' => true));
}
public function getName()
{
return 'twitter_form';
}
}
Когда я сохранить его в моей базе данных, поле «метка» сохранить эту строку:
Doctrine\Common\Collections\[email protected]
а не значение свойства «тег», какова моя ошибка? Или, наоборот, это правильно, и я должен показать его в правильной форме шаблона ветви?
Заранее спасибо.
Edit1:
Решение: Наконец, я должен был изменить только мой twitterpost Entity:
<?php
namespace FEB\TwitterBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Twitterpost
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="FEB\TwitterBundle\Entity\TwitterpostRepository")
*/
class Twitterpost
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="titulo", type="string", length=50)
* @Assert\NotNull(message="Debe escribir un titulo")
*/
private $titulo;
/**
* @var string
*
* @ORM\Column(name="tweet", type="string", length=145)
* @Assert\NotNull(message="Debe escribir un tweet")
*/
private $tweet;
/**
* Many-To-Many, Unidirectional
*
* @var ArrayCollection $tags
*
* @ORM\ManyToMany(targetEntity="\FEB\TagsBundle\Entity\tag")
* @ORM\JoinTable(name="twitter_has_tag",
* joinColumns={@ORM\JoinColumn(name="twitter_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
*)
*/
private $tags;
public function __construct()
{
$this->tags = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set titulo
*
* @param string $titulo
* @return Twitterpost
*/
public function setTitulo($titulo)
{
$this->titulo = $titulo;
return $this;
}
/**
* Get titulo
*
* @return string
*/
public function getTitulo()
{
return $this->titulo;
}
/**
* Set tweet
*
* @param string $tweet
* @return Twitterpost
*/
public function setTweet($tweet)
{
$this->tweet = $tweet;
return $this;
}
/**
* Get tweet
*
* @return string
*/
public function getTweet()
{
return $this->tweet;
}
/**
* Set tags
*
* @param string $tags
* @return Twitterpost
*/
public function setTags($tags)
{
$this->tags = $tags;
return $this;
}
/**
* Get tags
*
* @return string
*/
public function getTags()
{
return $this->tags;
}
}
Тег Entity не имеет каких-либо изменений.
что изменения порождают следующую таблицу базы данных:
Таблица: twitter_has_tag
twitter_id
tag_id
Я думаю, что все в порядке, нет?
Пожалуйста вывесить вас Twitterpost определение объекта. Вероятно, это связано с тем, что вы сохраняете объекты в одном поле, вместо того, чтобы иметь связанный объект. – saamorim
Благодарим вас за ответ, @saamorim. Post Edited Идея заключается в сохранении строкового поля объекта twitterpost под названием «теги», имя тега, разделенное запятыми. – cmaciasg