PHP/Doctrine ORM 多个 'one-to-one' 与同一类的关系

标签 php doctrine database-relations

正在开发一个项目,其中有一个名为“Product”的类和一个名为“Image”的类。每个产品都有两种类型的图像,一种是“正面”图像,一种是“背面”图像,因此我定义了两个字段,一个称为 image_front_id,一个称为 image_back_id。

在方法 BaseProduct::setUp() 中,我定义了前面图像的关系,如下所示:

$this->hasOne( 'Image', array ('local' => 'image_front_id', 'foreign' => 'id' ) );

现在,显然,当我为“Image”类定义另一个“hasOne”时,但现在使用“image_back_id”的本地字段名,这是行不通的。所以我的问题是:如何定义与同一类的多个“一对一”关系?我已经找这个有一段时间了,但似乎找不到。

最佳答案

正确答案是

$this->hasOne('Image as FrontImage', array('local' => 'image_front_id', 'foreign' => 'id'));
$this->hasOne('Image as BackImage', array('local' => 'image_back_id', 'foreign' => 'id'));

关于PHP/Doctrine ORM 多个 'one-to-one' 与同一类的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1744278/

相关文章:

symfony1 - 在 symfony 中扩展 sfDoctrineRecord

php - 如何在 Laravel 上注册后插入另一个表?

mysql - Laravel 多对多关系或一对多关系

php - 对从 MySQL COUNT() 创建的 JSON 对象使用 $.each

php - PHP UPDATE将使用int而不是采用表单输入的数据进行更新

php - 告诉我谁在线以及有多少用户在线的脚本

php - 将 Ajax 数据中的第二个值传递给 PHP

php - JMSSerializerBundle,反序列化后持久化没有关系

php - Doctrine 2.0 准备好使用了吗?

TypeORM:仅加载某些指定字段的关系