假设我们有一个简单的实体User,它包含一个属性$addresses,而这个实体拥有一个Address个对象的集合,如何使用教义(doc)来实现这一点?

这是我的测试:

<?php
use Doctrine\ORM\Mapping\Embeddable;
use Doctrine\ORM\Mapping\Embedded;

#[Embeddable]
class Address
{
    private string $name;
}

class User
{
    #[Embedded(class: Address::class.'[]')]
    private array $addresses;
}

在本例中,这不起作用,因为当我检索记录User时,属性$address只表示一个二维数组,而不是一个由Address个实例组成的array.

推荐答案

class User的定义中,这是你的错误.

private array $address;

这应该是:

private Address $address;

不幸的是,你不能使用Embedables来实现复杂的关联和Doctrine ORM has no plan to do it.

要做到这一点,你将不得不使用更classic 的OneToMany主义协会.

Php相关问答推荐

无法添加ProxyClass__setInitialized()上的忽略

如何将对我的域的请求重定向到子文件夹中的索引,同时保留域URL并使用.htaccess?

WooCommerce HPOS管理订单列表中带有订单元数据的定制列

PHP -多维数组到一维数组

对表示大小的值后缀进行自定义排序(XXS、XS、S、M、L、XL、XXL)

Select 本地提货时隐藏WooCommerce显示的发货成本

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

curl_close()未从PHP 8开始写入CURLOPT_COOKIEJAR会话文件

文本到语音:不考虑音高值

WooCommerce 回购自定义插件:如何更新用户钱包?

PHP:数组的等边

PHP 在数组中搜索值

为什么 debug_backtrace() 不返回任何内容?

注册命名空间后如何获取xml node 值?

仅在管理员新订单通知中显示WooCommerce订单商品自定义元数据

为什么在 phpunit 的开头测试 PHP_VERSION?

每个发布请求 Laravel 9 的 CSRF 令牌不匹配

如何在 WooCommerce 中显示每个自定义选项卡的内容

PHP 自动函数参数和变量

如何在 Laravel 中保存多对多