dourunlao1642 2013-08-13 15:35
浏览 62
已采纳

如何将一个Doctrine实体保存到两个数据库表(MySQL优化所需)

In my database I've a table file and a table file_content. The file table stores the metadata of the file such as name, mime and some more. The file_content stores a blob with the file content. I'm not storing the blob in the same table as the metadata for performance reasons only.

For a 'version 2' of my project I'm looking into Doctrine (2.3). To me, a "File" seems to be one entity, with properties such as name, mime, extension, content that should be used like this:

$file = new File();
$file->setName('hello.txt');
$file->setMime('text/plain');
$file->setContent('Hello world!')
$em->persist($file);
$em->flush();

Is this behaviour possible? To me it makes no sense to create two entities for something that's really just one entity. I could not find anything about it in the documentation and I read in a 2-year-old topic that it isn't possible in Doctrine 2.1: Doctrine 2.1 - Map entity to multiple tables

Someone any suggestions how to handle this correctly? I'm new to Doctrine and have been playing around with it a bit to see if it's the right choice for my project. Thanks.

  • 写回答

3条回答 默认 最新

  • dongzouche9108 2013-08-13 15:58
    关注

    Do you have the ability to alter the schema of your database? If so, I'd consider consolidating this into one table.

    Barring that, you may want to try a one-to-one relationship in Doctrine. Perhaps something like:

    class File {
        private $id;
        private $name;
        private $mime;
        private $content;
    }
    
    class Content {
        private $id;
        private $data;
        private $fileId;
    }
    

    If you map Content->fileId with a one-to-one relationship to File->id, then you can do things like:

    $file->getContent()->getData();
    $file->getContent()->setData("something different");
    

    Here's some more info on one-to-one mappings: http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#one-to-one-unidirectional

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥115 用Java解决探地雷达dzt文件的解析过程
  • ¥20 有关神经网络这道(b)determine the parameters of neural network
  • ¥25 annaconda jvpyter
  • ¥20 来一个会抓包app支付接口的
  • ¥30 vivado2017.4的sdk打不开
  • ¥50 matlab,文献复现
  • ¥20 寻找Flink CDC指导,有偿咨询
  • ¥15 cruise如何仿真不同温度下车辆的经济性?
  • ¥20 扑克牌游戏的完整代码
  • ¥88 求帮安装Python架构的vnpy