我有一个File实体,用于在其他实体(新闻/博客/等)中上传句柄文件。
我用OneToOne关系指向它,它工作正常。但我会为每个关系实体更改上传目录:
上传/新闻
上传/博客
上传路径在我的文件实体中设置,所以我不知道如何自动更新路径foreach关系...
你知道怎么做吗?
感谢
答案 0 :(得分:0)
当然你可以做到。 在文件实体方面,您可以添加uploadDir属性,并创建一个这样的setter:
private $uploadDir;
public function setUploadDir($uploadDir)
{
if (!$this->uploadDir) {
$this->uploadDir = $uploadDir;
}
}
您的评论建议您将Symfony与Doctrine一起使用吗?
所以你可以像这样编辑经典的getUploadDir()方法:
protected function getUploadDir()
{
return 'uploads/' . $this->uploadDir;
}
在父母'实体必须在保留或更新之前更新此属性(在创建时)。
(我个人使用生命周期回调,但您可以在控制器中手动执行)
use Doctrine\ORM\Mapping as ORM;
/**
* News
*
* @ORM\Table(name="News")
* @ORM\HasLifecycleCallbacks
*/
class News
{
//....
/**
* @ORM\OneToOne(targetEntity="File",cascade={"persist","remove"})
*/
private $file;
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
function setUploadDir()
{
$this->getFile()->setUploadDir('news');
}
// ....
您还可以添加常量以使代码更清晰...... 我希望它会帮助你