我在symfony中有一个表单,我用ajax / xhr2发送到服务器。它包括文本字段和可能的文件(不允许或多个文件)。因此,我创建了一个名为“post”的实体,用于保存提交的文本,执行该文本的用户以及日期/时间。此外,它与名为“upload”的实体的OneToMany关系相关联。
class Post{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="text")
*/
private $text;
/**
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="posts")
* @ORM\JoinColumn(name="users", referencedColumnName="id")
*
*/
private $author;
/**
* @ORM\OneToMany(targetEntity="Upload", mappedBy="post")
*/
private $uploads;
此实体保存上传文件中的所有相关数据。
class Upload
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=30)
*/
private $name;
/**
* @ORM\Column(type="string", length=255)
*/
private $path;
/**
* @ORM\Column(type="datetime")
*/
private $date;
/**
* @ORM\Column(type="string", length=30)
*/
private $type;
/**
* @ORM\Column(type="integer")
*/
private $size;
在上传实体中,我还按照http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html
中的说明放置了上传方法现在,当我保留帖子时,帖子类会尝试上传文件而不是将其保留为上传类。因此,我得到一个错误,即post类中不存在方法setUploads。当我添加它时,我得到的错误是该方法收到了UploadedFile的实例而不是上传。
有没有人能像我建模的方式或如何创建更好的模型那样上传文件?
非常感谢!
答案 0 :(得分:0)
我写了一篇关于如何将文件上传到Symfony2 here的完整说明。正如您所猜想的那样,您需要将方法setUploads()
添加到Post
实体。上传的文件将链接到Upload
实体,而不是Post
本身。