doctrine-orm 相关问题

Doctrine ORM是一个PHP ORM。虽然Doctrine 1.2使用Active Record模式,但Doctrine ORM 2及更高版本使用Data Mapper模式。 Doctrine项目是一个开源库和工具的集合,用于处理用PHP编写的数据库抽象和对象关系映射。

Doctrine 2 QueryBuilder

假设有以下两个表,'user'和'friends'; '用户' 列: ID 栏目:姓名 '朋友们' 列:user_id 列:user2_id Friends 表中的两列都对应于用户表 id

回答 1 投票 0

在 Doctrine ODM 中获取引用的 id 数组

我有一个引用用户的 Company 类: /** * @MongoDB\文档() */ 类公司{ /* ... */ /** * @MongoDB\ReferenceMany(targetDocument="Topboard\UserBundle\Document\User",

回答 1 投票 0

在 Symfony 中与 Querybuilder 创建更全面的关联

我正在构建一个查询,用于创建具有与用户关联的项目的帖子列表,并在该结构中达到“tierAccess”的正确条件。 我的问题...

回答 1 投票 0

Doctrine DBAL - WHERE IN 带有附加参数的数组

使用示例文档,我能够得到这样的查询。 选择 f.foo, b.酒吧 来自 Foo f 左连接栏 b 在哪里 f.foo = 20 和b.bar在? 使用 DBAL,此代码返回结果。 $结果...

回答 2 投票 0

如何在 Shopware 6 中注入通用 EntityRepository?

我想知道如何获取通用的 EntityRepository,因为我需要以动态方式处理许多实体,并且在 services.xml 文件中对实体注入进行硬编码是不可行的。 在...

回答 1 投票 0

在 Symfony2 中使用 Doctrine DQL 时限制检索的记录数量

我有以下疑问: $latestcontent = $em->createQuery(' SELECT c.title、c.content、c.lastedit、a.firstname、a.surname 来自 ShoutMainBundle:内容 c,

回答 1 投票 0

Symfony 学说错误“DoctrineMigrationsBundle 需要启用 DoctrineBundle。”

我创建了一个新的 Symfony 项目,并且不断收到“DoctrineMigrationsBundle 需要启用 DoctrineBundle”。错误并且无法摆脱它。看来我是唯一的一个...

回答 2 投票 0

Symfony2 添加属性到对象

这是一个延续另一个主题的问题: QueryBuilder/Doctrine 选择加入 groupby 请打开它,以便您可以看到数据库架构。 我的问题是: 我有一个目标,一个目标有很多

回答 1 投票 0

为什么我在 symfony 中遇到虚拟属性错误?

我有这个实体 我有这个实体 <?php namespace App\Entity; use ApiPlatform\Metadata\ApiResource; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Criteria; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; #[ApiResource( normalizationContext: ["groups" => ["contact", "contact_read"]], denormalizationContext: ["groups" => ["contact", "contact_write"]] )] #[ORM\Entity] class Contact { // ... #[ORM\OneToMany(targetEntity: Email::class, mappedBy: "contact")] #[Groups(["contact"])] private $emails; // ... public function __construct() { $this->emails = new ArrayCollection(); } // ... public function getEmails() { return $this->emails; } // ... } 我想添加虚拟财产 #[Groups(["contact"])] public function getPrimaryEmail() { $criteria = Criteria::create()->where(Criteria::expr()->eq("is_primary", true)); $matches = $this->emails->matching($criteria); return ($matches->count()) ? $matches->first()->getAccount() : null; } 并且它有效......但如果方法的名称是getEmail(),则无效 #[Groups(["contact"])] public function getEmail() { $criteria = Criteria::create()->where(Criteria::expr()->eq("is_primary", true)); $matches = $this->emails->matching($criteria); return ($matches->count()) ? $matches->first()->getAccount() : null; } 在这种情况下我会收到此错误 多对关系的意外不可迭代值 这是为什么呢?有没有办法让方法保持getEmail()? 我正在使用 API Platform 3.2.10 和 symfony 6.4.1 完全错误: { "@id": "/errors/400", "@type": "hydra:Error", "title": "An error occurred", "detail": "Unexpected non-iterable value for to-many relation.", "status": 400, "type": "/errors/400", "trace": [ { "file": "vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php", "line": 192, "function": "getAttributeValue", "class": "ApiPlatform\\Serializer\\AbstractItemNormalizer", "type": "->" }, { "file": "vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php", "line": 171, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer", "type": "->" }, { "file": "vendor/api-platform/core/src/JsonLd/Serializer/ItemNormalizer.php", "line": 111, "function": "normalize", "class": "ApiPlatform\\Serializer\\AbstractItemNormalizer", "type": "->" }, { "file": "vendor/symfony/serializer/Debug/TraceableNormalizer.php", "line": 58, "function": "normalize", "class": "ApiPlatform\\JsonLd\\Serializer\\ItemNormalizer", "type": "->" }, { "file": "vendor/symfony/serializer/Serializer.php", "line": 159, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Debug\\TraceableNormalizer", "type": "->" }, { "file": "vendor/api-platform/core/src/Hydra/Serializer/CollectionNormalizer.php", "line": 91, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "vendor/api-platform/core/src/Serializer/AbstractCollectionNormalizer.php", "line": 106, "function": "getItemsData", "class": "ApiPlatform\\Hydra\\Serializer\\CollectionNormalizer", "type": "->" }, { "file": "vendor/api-platform/core/src/Hydra/Serializer/PartialCollectionViewNormalizer.php", "line": 50, "function": "normalize", "class": "ApiPlatform\\Serializer\\AbstractCollectionNormalizer", "type": "->" }, { "file": "vendor/api-platform/core/src/Hydra/Serializer/CollectionFiltersNormalizer.php", "line": 91, "function": "normalize", "class": "ApiPlatform\\Hydra\\Serializer\\PartialCollectionViewNormalizer", "type": "->" }, { "file": "vendor/symfony/serializer/Debug/TraceableNormalizer.php", "line": 58, "function": "normalize", "class": "ApiPlatform\\Hydra\\Serializer\\CollectionFiltersNormalizer", "type": "->" }, { "file": "vendor/symfony/serializer/Serializer.php", "line": 159, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Debug\\TraceableNormalizer", "type": "->" }, { "file": "vendor/symfony/serializer/Serializer.php", "line": 138, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "vendor/symfony/serializer/Debug/TraceableSerializer.php", "line": 47, "function": "serialize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "vendor/api-platform/core/src/State/Processor/SerializeProcessor.php", "line": 65, "function": "serialize", "class": "Symfony\\Component\\Serializer\\Debug\\TraceableSerializer", "type": "->" }, { "file": "vendor/api-platform/core/src/State/Processor/WriteProcessor.php", "line": 42, "function": "process", "class": "ApiPlatform\\State\\Processor\\SerializeProcessor", "type": "->" }, { "file": "vendor/api-platform/core/src/Symfony/Controller/MainController.php", "line": 111, "function": "process", "class": "ApiPlatform\\State\\Processor\\WriteProcessor", "type": "->" }, { "file": "vendor/symfony/http-kernel/HttpKernel.php", "line": 181, "function": "__invoke", "class": "ApiPlatform\\Symfony\\Controller\\MainController", "type": "->" }, { "file": "vendor/symfony/http-kernel/HttpKernel.php", "line": 76, "function": "handleRaw", "class": "Symfony\\Component\\HttpKernel\\HttpKernel", "type": "->" }, { "file": "vendor/symfony/http-kernel/Kernel.php", "line": 197, "function": "handle", "class": "Symfony\\Component\\HttpKernel\\HttpKernel", "type": "->" }, { "file": "vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php", "line": 35, "function": "handle", "class": "Symfony\\Component\\HttpKernel\\Kernel", "type": "->" }, { "file": "vendor/autoload_runtime.php", "line": 29, "function": "run", "class": "Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner", "type": "->" }, { "file": "public/index.php", "line": 5, "function": "require_once" } ], "hydra:title": "An error occurred", "hydra:description": "Unexpected non-iterable value for to-many relation." } 可能是因为 symfony 序列化器在规范化过程中将 getEmail 确定为 emails 属性的访问器,从而导致类型不匹配,因为 getEmail 返回单个对象,而 emails 是一个集合。 为了避免这些“晚期”错误,您可以通过向每个属性、方法参数和返回添加严格类型来改进代码。 它仍然会失败,但会给你更容易理解的错误消息。 <?php namespace App\Entity; use ApiPlatform\Metadata\ApiResource; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; #[ApiResource( normalizationContext: ["groups" => ["contact", "contact_read"]], denormalizationContext: ["groups" => ["contact", "contact_write"]] )] #[ORM\Entity] class Contact { // ... /** * @var Collection|Email[] */ #[ORM\OneToMany(targetEntity: Email::class, mappedBy: "contact")] #[Groups(["contact"])] private Collection $emails; // ... public function __construct() { $this->emails = new ArrayCollection(); } // ... /** * @return Collection|Email[] */ public function getEmails(): Collection { return $this->emails; } // ... #[Groups(["contact"])] public function getEmail(): ?Email { $criteria = Criteria::create()->where(Criteria::expr()->eq("is_primary", true)); $matches = $this->emails->matching($criteria); return ($matches->count()) ? $matches->first() : null; } }

回答 1 投票 0

在 Doctrine DQL 查询中使用 COLLATE (Symfony2)

我找不到任何与在 Doctrine 的 DQL 查询中使用 COLLATE 相关的内容(当然它似乎不起作用)。 我的具体问题: 我有一个带有 utf8_general_ci 字符集的表。我有一个sp...

回答 2 投票 0

带有 DiscriminatorColumn 的 Symfony 实体工厂不起作用

我有这个实体Contact.php #[ORM\DiscriminatorColumn(名称: '类型', 类型: '字符串')] #[ORM\DiscriminatorMap([ 'person' => ContactType\Person::class, '家庭' => 联系人类型\家庭:...

回答 1 投票 0

symfony2 +doctrine2@postgresql 设置模式

我想在新项目中使用symfony2+doctrine2。我遇到了 postgresql-schemes 的一个小问题。与 mysql 相比,您可以在 postgres(像其他数据库一样)中指定不同的方案。我们的

回答 3 投票 0

使用 php-di 在 slim 4 中集成学说

尝试使用 slim 4 和 php-di 的学说,但我无法使用 autowire 运行它。 按照我的设置: 索引.php $定义= [ “设置”=> [ '教义' => [ '

回答 1 投票 0

在 Symfony 6.4 中使用 StofDoctrineExtensionsBundle 和 NestedTreeRepositoryTrait 进行树重新排序后出现错误

简介 我在用: 交响乐 v6.4.3 StofDoctrine扩展包 嵌套树存储库特征 我做了什么 对树重新排序后(嵌套集) 像这样: $treeNodeRoot = $repo_file_tree_stored-...

回答 1 投票 0

命令不同步;您现在无法运行此命令 - EXT:indexed_search 的 TYPO3 后端模块上出现错误

在我的 TYPO3 8.7 安装的生产环境中,当我尝试打开 TYPO3 后端模块“Indexing”时,我收到此错误消息: 命令不同步;你现在不能运行这个命令

回答 2 投票 0

如何在Doctrine2中添加列描述(注释)

我想向 Doctrine2 实体定义的列添加列描述(也称为“注释”),但找不到有关如何使用 @Column 注释来执行此操作的任何信息...

回答 2 投票 0

使用原则连接表时,为什么使用Join或InnerJoin方法时要放置primaryTable.JoiningTable?

$qb->select('c') ->innerJoin('c.phones', 'p', 'WITH', 'p.phone = :phone') ->where('c.用户名 = :用户名') ->setParameter('电话', $电话) ->setParameter('用户名', $

回答 2 投票 0

Doctrine 2.1 - 日期时间列默认值

有人可以告诉我如何在日期时间列上添加默认值吗?我不能这样做: protected $registration_date = date("Y-m-d H:i:s", time()); 那我该如何处理呢?

回答 8 投票 0

使用 SQLite 内存 DB 进行 Symfony / Doctrine 单元测试

我仍在进行 PHP 单元测试,以测试我的 symfony2 控制器。我的测试类是 WebTestCase 的派生,测试正在执行 GET 或 POST 请求来检查一切是否正常...

回答 3 投票 0

带有连接表的 Doctrine 查询生成器 ManyToMany

我尝试通过学说查询生成器构建类似这样的查询: 选择中号 来自产品 p,型号 m INNER JOIN Product_model pm ON (m.id = pm.model_id) 其中 p.id = pm.product_id 和 m.serial...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.