Codeception / Codeception/module-doctrine
seeInRepository does not work with values from multiple relations
- 主要语言
- PHP
- 星标
- 4
- 派生
- 2
- PR 合并指标
- 30 天内没有已合并 PR
描述
Example: a one-to-many relation (uni-directional, so implemented as many-to-many with join table):
```php
#[ManyToMany(targetEntity: Ordination::class, cascade: ['all'], orphanRemoval: true)]
private Collection|ArrayCollection $ordinations;
```
Just for this example I save a `Doctor` entity with two `Ordination` relations with `haveInRepository` in my test.
But then there's no possibility to check for values of both ordinations
```php
$this->tester->seeInRepository(Doctor::class, [
'name.firstName' => 'Mauris',
'ordinations' => [
[
'externalReferenceId' => '3'
]
]
]);
```
This leads to
```
[Doctrine\ORM\Query\QueryException] [Syntax Error] line 0, col 140: Error: Expected Doctrine\ORM\Query\Lexer::T_IDENTIFIER, got '0'
```
because of the nested structure.
What works is a check for a single relation:
```php
$this->tester->seeInRepository(Doctor::class, [
'name.firstName' => 'Mauris',
'ordinations' => [
'externalReferenceId' => '3'
]
]);
```
(so as a workaround, I could call the `seeInRepository` multiple times with a different relation's values …)
The problem is in the method \Codeception\Module\Doctrine2::_buildAssociationQuery
but I'm not really sure how to fix this for a PR. Anyone with more knowledge on this?
I guess this issue is somehow related to Codeception/module-doctrine#16
贡献指南
这个仓库没有索引到贡献指南
调研方向
Start in Codeception\Module\Doctrine2::_buildAssociationQuery and reproduce the shown Doctor/Ordination case with two relations. Investigate why the nested collection produces a Doctrine QueryException, then verify that seeInRepository accepts multiple relation values without requiring separate calls.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- php
- 领域
- database, testing-qa
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100