doctrine 相关问题

Doctrine Project是一个开源库和工具的集合,用于处理用PHP编写的数据库抽象和对象关系映射。

Doctrine 大查询性能

我在处理大型学说查询时遇到了很大的困难,数据库中有 17000 个联系人,近 100 万行用于统计和订单。 正如你所看到的,有很多计算值,我想...

回答 1 投票 0

尽管调用了 setter,但 Doctrine 字段仍为空

我有一个通过以下方式与用户实体相关的评论实体 #[ORM\ManyToOne(targetEntity: User::class, inversedBy: '评论')] 私人用户$user; 当尝试像这样保存它时: $评论...

回答 1 投票 0

Symfony 原则查找具有 In 和 NotIn 标准的实体不起作用。使用实体数组作为参数时找不到实体

所以我遇到了一个问题,我不确定我是否做错了什么或者存在一些错误。 使用 Symfony 7.2.1 我有两个三实体,其中之一是连接。 Ean、货架、EanShelfQuantity ...

回答 1 投票 0

Symfony2 中 mongodb 批量插入的最佳实践

在我的 symfony2 命令中,我正在运行一个脚本,该脚本将数十万个 url(作为字符串)插入到文档中。 以下是我正在使用的两个文档的基本结构。节目开始前...

回答 2 投票 0

Doctrine 迁移:重复生成相同的 ALTER TABLE 语句

我最近将我的 Symfony 项目从 5.4 升级到 6.4.13。现在,我在 Symfony 项目中遇到了 Doctrine Migrations 的问题。当我运行doctrine:migrations:diff 命令时,它生成...

回答 1 投票 0

无法将 PHP 值 X 转换为 uuid 类型。需要以下类型之一:字符串。但是 X 实现了 \Stringable

当我调用Doctrine的flush函数来保存X实体时,出现转换错误。 无法将 X 类型的 PHP 值转换为 uuid 类型。需要以下类型之一:null、string、Symfony\

回答 1 投票 0

在数据库中创建现有类型实体并将其添加到数据实体,而无需加载不带参数的类型实体 Symfony 或 Builder

我面临着一个相当具体的问题。我们继承了一个已经存在很长时间的应用程序,没有任何测试套件,并且很难维护。为了改善这一点,我们创建了一个...

回答 1 投票 0

我在 symfony 中使用原则时得到了错误的数据

我正在尝试使用原则构建 SQL 查询。这是我的代码片段: /** * @Route("/db", name="user_skill_testing") */ 公共函数 dbTest() { //用户的所有技能 $用户名 = "J...

回答 2 投票 0

如何改进 DoctrineODM 中的 MongoDB 搜索结果

我正在尝试将我的 mongo 搜索引擎发展为更先进的东西。我知道为什么下面的代码给出了结果。我为如何扩展搜索功能而苦恼。 我会...

回答 1 投票 0

Doctrine中如果参数为null,如何忽略where语句?

我在 Doctrine 中的 QueryBuilder 有问题。我编写了一个有 2 个参数的查询,它们影响 where 语句。如果相关参数为空,我想忽略 where 语句....

回答 1 投票 0

Symfony2 Doctrine 查询生成器 where IN

我在谷歌上浪费了数万亿个小时,但没有一个解决方案是好的。 我有这个查询生成器: $qb2=$this->createQueryBuilder('s') ->addSelect(‘u’) ->innerJoin...

回答 2 投票 0

学说 - 没有主键的表

我使用教义。 是否可以生成基于带有表(重要)但没有主键的数据库的实体? 数据库用于 Chacal XXI(一个应用程序),并且 1 或 2 个表没有主表...

回答 2 投票 0

INET_ATON 在where 语句doctrine2 querybuilder zend2

问题:我想在 Doctrine2 中使用 querybuilder 运行查询,例如: SELECT * FROM TABLE WHERE `column1` = 'x' and (`column2` = INET_ATON('1.1.1.1') OR `column3` like '%bla%'...) 我该怎么办...

回答 4 投票 0

数据库架构与当前映射文件不同步

我正在使用 Symfony 5,并且在迁移时遇到了一些问题。 我正确创建了模型,所有迁移都通过了。 只是为了检查我运行: ./bin/console 学说:schema:vaidate 这告诉我...

回答 1 投票 0

doctrine/doctrine-fixtures-bundle 3.7.0 中的错误:函数 Doctrine\Common\DataFixtures\AbstractFixture::getReference() 的参数太少

将 Doctrine/doctrine-fixtures-bundle 更新到 v3.7.0 后,我在尝试加载灯具时收到此错误: 在 AbstractFixture.php 第 78 行: 函数 Doctrine\Common\

回答 1 投票 0

PHP Doctrine - 违反完整性约束:1062 重复条目(主键)

我正在从自定义 PDO 查询加载大量 User 和相关的 Group 对象(使用 Doctrine 连接 => $dbh = Doctrine_Manager::connection()->getDbh(); )。该查询涉及交叉连接...

回答 1 投票 0

Doctrine实体管理器不插入ID列

我有以下型号: 我有以下型号: <?php namespace App\Domain\Model\Meal; use App\Domain\Model\HasUuid; use App\Domain\Model\Timestampable; use App\Domain\Model\User\Child; use Doctrine\ORM\Mapping as ORM; use Ramsey\Uuid\Uuid; #[ORM\Entity] #[ORM\Table(name: 'meal_opt_out')] final class MealOptOut { use HasUuid; use Timestampable; #[ORM\ManyToOne(targetEntity: MealItemSchedule::class)] #[ORM\JoinColumn(name: 'meal_item_schedule_id', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')] private MealItemSchedule $mealItemSchedule; #[ORM\ManyToOne(targetEntity: Child::class)] #[ORM\JoinColumn(name: 'child_id', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')] private Child $child; public function __construct( MealItemSchedule $mealItemSchedule, Child $child ) { $this->id = Uuid::uuid4()->toString(); $this->mealItemSchedule = $mealItemSchedule; $this->child = $child; } // Getters and setters... } 具有Uuid特征: <?php namespace App\Domain\Model; use Doctrine\ORM\Mapping as ORM; trait HasUuid { #[ORM\Id] #[ORM\Column(name: 'id', type: 'string', unique: true)] protected string $id; public function getId(): string { return $this->id; } public function setId(string $id): void { $this->id = $id; } } 我使用的是六角形架构,所以我有一些接口,但最重要的文件是DoctrineMealOptOutRepository: <?php namespace App\Infrastructure\Repository\Meal; use App\Domain\Model\Meal\MealOptOut; use App\Domain\Repository\Meal\MealOptOutRepositoryInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; final class DoctrineMealOptOutRepository extends ServiceEntityRepository implements MealOptOutRepositoryInterface { public function __construct( private ManagerRegistry $manager, ) { parent::__construct($manager, MealOptOut::class); } /* public function save(MealOptOut $mealOptOut): void { $this->getEntityManager()->persist($mealOptOut); $this->getEntityManager()->flush(); } */ public function save(MealOptOut $mealOptOut): void { $connection = $this->getEntityManager()->getConnection(); $sql = ' INSERT INTO meal_opt_out (id, meal_item_schedule_id, child_id, created_at, updated_at) VALUES (:id, :meal_item_schedule_id, :child_id, NOW(), NOW()) '; $params = [ 'id' => $mealOptOut->getId(), 'meal_item_schedule_id' => $mealOptOut->getMealItemSchedule()->getId(), 'child_id' => $mealOptOut->getChild()->getId(), ]; $connection->executeStatement($sql, $params); } } MealOptOutRepository接口: <?php namespace App\Domain\Repository\Meal; use App\Domain\Model\Meal\MealOptOut; interface MealOptOutRepositoryInterface { public function save(MealOptOut $mealOptOut): void; } MealOptOutService接口: <?php namespace App\Domain\Service\Meal; use App\Domain\Model\Meal\MealItemSchedule; use App\Domain\Model\Meal\MealOptOut; use App\Domain\Model\User\Child; interface MealOptOutServiceInterface { public function saveMealOptOut(MealOptOut $mealOptOut): ?MealOptOut; } MealOptOutService 实施: <?php namespace App\Domain\Service\Meal\Impl; use App\Domain\Model\Meal\MealItemSchedule; use App\Domain\Model\Meal\MealOptOut; use App\Domain\Model\User\Child; use App\Domain\Repository\Meal\MealOptOutRepositoryInterface; use App\Domain\Service\Meal\MealOptOutServiceInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use Ramsey\Uuid\Uuid; final class MealOptOutServiceImplementation extends ServiceEntityRepository implements MealOptOutServiceInterface { public function __construct( private MealOptOutRepositoryInterface $mealOptOutRepository, private ManagerRegistry $manager, ) { parent::__construct($manager, MealOptOut::class); } public function saveMealOptOut(MealOptOut $mealOptOut): ?MealOptOut { return $this->mealOptOutRepository->save($mealOptOut); } } 该服务的调用方式如下: $mealOptOut = new MealOptOut($this->selectedMealItemSchedule, $child); // $mealOptOut->setId(Uuid::uuid4()->toString()); $this->mealOptOutService->saveMealOptOut($mealOptOut); 问题是当我在DoctrineMealOptOutRepository中使用这个版本的save时 public function save(MealOptOut $mealOptOut): void { $this->getEntityManager()->persist($mealOptOut); $this->getEntityManager()->flush(); } 我收到以下错误: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value ... at Doctrine\DBAL\Connection->convertExceptionDuringQuery(object(Exception), 'INSERT INTO meal_opt_out (created_at, updated_at, meal_item_schedule_id, child_id) VALUES (?, ?, ?, ?)', array(null, null, 'f8ab33de-ab9d-11ef-bcf3-44da78cb937b', 'a440ab82-573d-4475-a9e3-b5bf839352ed'), array('datetime', 'datetime', 'string', 'string')) 您在日志中看到实体管理器由于某种原因没有插入 id 列。我 100% 确定 id 已设置。我对其他实体使用完全相同的架构和特征,并且它适用于它们。我尝试自动生成 uuid,但这也没有帮助。 我暂时通过手动执行 SQL 来修复它(确实有效,表明 ID 确实设置正确)。 我做错了什么? 您可能缺少GenerateValue行,如下所示: <?php namespace App\Domain\Model; use Doctrine\ORM\Mapping as ORM; trait HasUuid { #[ORM\Id] #[ORM\GeneratedValue(strategy: 'CUSTOM')] #[ORM\Column(type: 'uuid', unique: true)] #[ORM\CustomIdGenerator(class: UuidGenerator::class)] private ?UuidInterface $id = null;

回答 1 投票 0

原则 2:禁用延迟加载/代理生成。

使用原则 2,是否可以: 从生成的代理类中排除属性? 完全禁用延迟加载/代理生成? 我在序列化我的实体时遇到问题(使用

回答 2 投票 0

如何在api平台结果上添加额外信息

我正在使用symfony和api平台。 我有一个资源: /** * @ApiResource() */ 班级学分 { /** * @ORM\Id() * @ORM\GenerateValue() * @ORM\Column(类型=“整数”) ...

回答 2 投票 0

如何在 Doctrine 数据库抽象层 (DBAL) 中输入 NULL 或字符串

我使用的是 Symfony 7.4.1 ... 使用 Doctrine\DBAL\Connection; 使用 Doctrine\DBAL\ParameterType; ... 公共函数 setImages(int $post_id, ?string $images_str): void { $this->连接...

回答 1 投票 0

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