Doctrine ORM是一个PHP ORM。虽然Doctrine 1.2使用Active Record模式,但Doctrine ORM 2及更高版本使用Data Mapper模式。 Doctrine项目是一个开源库和工具的集合,用于处理用PHP编写的数据库抽象和对象关系映射。
有点奇怪 我在我的存储库中编写了一个接受字符串查询的搜索函数。 在此,它运行一个快速查询,对实体标题进行通配符搜索,寻找匹配...
表单的视图数据应该是 MyEntity 的实例,但却是 ArrayCollection 的实例
我可以创建一个工作正常但在尝试将数据刷新到数据库时出现错误的表单: 控制器操作如下所示: $purchase = 新的purchase(); $form = $this->
如何使用createQueryBuilder添加另一列来计算值?
当我查询用户的详细信息以计算连接到每个用户的设备时,此代码可以正常工作。 $em = $this->getEntityManager(); $query = '选择 u.id, u.email, COALESCE(c, 0) d...
我在 Symfony 5 中使用 Doctrine 和继承时遇到一些问题。 首先,我有一个只有 2 个日期的基本实体(createdAt 和 UpdatedAt)。 /** * @ORM\MappedSuperclass() */ 基础实体类 { /...
我正在编写一些单元测试,需要在单元测试中调用一些命令以创建测试数据库。 但是,当我调用该命令时,它会将通知转储到屏幕上。 有没有...
Symfony 表单 CollectionType 字段的顺序
在我的模型中,我有一个食谱实体和成分实体。在Recipe实体中,关系定义如下: /** * @ORM\OneToMany(targetEntity =“成分”,mappedBy =“食谱”,级联= {“删除”,“
我有一个 Symfony3 CRM,它实现了一个表单来创建发票。在此表格中列出了不同的成本,例如劳动力、服务和材料。我已经对其进行了编码,因此它是多维的......
订阅者在 API Platform 3.2 / Symfony6.4 中不会被调用
当使用 POST api 调用创建用户时,我让订阅者对密码进行哈希处理: 只读类PasswordHashSubscriber 实现EventSubscriberInterface { 公共函数 __construct(私有
我正在继续阅读 Doctrine 的入门指南,但由于“在第 6 行 /var/www/test/product-create.php 中未找到类‘Product’”而陷入困境: 我正在继续阅读 Doctrine 的入门指南,但由于“在第 6 行 /var/www/test/product-create.php 中未找到类‘Product’”而陷入困境: <?php require_once 'bootstrap.php'; $newProductName = $argv[1]; >>>>> $product = new Product(); $product->setName($newProductName); $entityManager->persist($product); $entityManager->flush(); echo sprintf('Created Product with ID %d' . PHP_EOL, $product->getId()); 正如指南中所写,我的项目中的“./src”目录下有 Product 类。 请帮助我,因为我想在没有 Symfony 的情况下开始使用 Doctrine,但我无法再继续了。 这是我的 bootstrap.php: <?php use Doctrine\ORM\Tools\Setup; use Doctrine\ORM\EntityManager; use Symfony\Component\Yaml\Parser; require 'vendor/autoload.php'; $yaml = new Parser(); $parameters = $yaml->parse(file_get_contents(__DIR__ . '/parameters.yml')); $parameters = $parameters['parameters']; $config = Setup::createAnnotationMetadataConfiguration(array(__DIR__ . '/src'), $parameters['debug']); $conn = array ( 'host' => $parameters['database_host'], 'port' => $parameters['database_port'], 'driver' => $parameters['database_driver'], 'user' => $parameters['database_user'], 'password' => $parameters['database_password'], 'dbname' => $parameters['database_name'] ); $entityManager = EntityManager::create($conn, $config); 这是我的 Product.php: <?php /** * @Entity * @Table (name="products") **/ class Product { /** * @Id * @Column(type="integer") @GeneratedValue **/ protected $id; /** * @Column(type="string") **/ protected $name; public function getId() { return $this->id; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } 提前谢谢大家! 我现在刚刚遇到你的问题,希望你找到答案,但为了帮助其他人,你需要确保在你的composer.json中包含以下内容 "autoload": { "psr-0": {"": "src/"} } 或者像@Сергей Студеникин建议的那样手动包含它 我不明白你在哪里包含产品类别。您需要在文件顶部写入 require_once 'patch_to_your_class/Product.php'; 或者使用类自动加载器。 我遇到了同样的问题,并通过正确配置我的 composer.json 文件中的自动加载部分来解决它。以下是我遵循的步骤: 1.基本自动加载配置: 在您的 composer.json 文件中包含以下代码: "autoload": { "psr-4": { "": "src/" } } 此配置告诉 Composer 从 src/ 目录自动加载类。 2.使用命名空间: 如果您的 product-create.php 文件使用 App\Entity 命名空间,您还需要将其包含在 composer.json 文件中: "autoload": { "psr-4": { "App\\Entity\\": "src/" } } 此配置将 App\Entity 命名空间映射到 src/ 目录。 3.自定义目录路径: 如果您的实体类位于不同的目录中,例如,src/entity/,请相应地更新路径: "autoload": { "psr-4": { "App\\Entity\\": "src/entity/" } } 此配置将 App\Entity 命名空间映射到 src/entity/ 目录。 4.重新生成自动加载文件: 对 composer.json 文件进行更改后,您需要通过运行以下 CLI 命令重新生成自动加载文件: composer dump-autoload 此命令更新 Composer 自动加载文件以反映新的自动加载配置。 因此,您不需要为添加的每个实体类都包含 require_once。
我对教义 2 有疑问。 我有以下数据库表: 因此,Doctrine 生成从站点的桌面设置检索数据的实体,但我需要从 desk_settings 检索所有设置...
从 Doctrine UnitOfWork 获取预定的额外更新
我有一个 Doctrine 事件监听器来监听 onFlush 事件。我使用它在保存时更新实体上的电子标签。 我需要访问计划删除的实体,以便我可以访问
Doctrine ORM 无法从 MySQL DB 中删除实体
我正在尝试清除实体集合。这是我的关系方案: 游戏 <-> GameQuest[] 玩家 <-> PlayerGameQuestLink[] PlayerGameQuestLink 实体有一些关于何时
使用 Doctrine\DBAL\Exception 捕获数据库错误
我想捕获来自插入语句或任何其他语句的任何错误(即:外键错误)。如何使用 Doctrine\DBAL\Exception 来实现这一点? 当我插入时我有这个: $db->
有人可以帮助我从具有不同列的两个表中获取所有数据吗?现在可以工作了,但我想按 DESC 字段“创建”顺序对所有帖子进行排序。 现在我按 id 排序,然后按“
Symfony:在 Doctrine 实体方法中使用返回类型提示的表单问题
我今天异常勤奋,决定返回类型提示我所有的 symfony 实体方法。所以: 我今天异常勤奋,决定返回类型提示我所有的 symfony 实体方法。所以: <?php Class User { private string $username; public method getUsername(): string {} } 一切都很好,直到我制作了一个表单来创建新用户: $user = new User(); $this->createForm(SignupType::class, $user); 当显示表单时,Symfony 会自动获取 User $user 这个新实例的属性。但由于它是一个新的实例化,它的 username 属性当然仍然是 null,这是一个不正确的返回类型,因为它需要是 string。 我应该: Symfony 实体中没有返回类型提示(meh); set $username = ''(但这有点违背了不允许空白的目的,我可以看到各种错误的演变);或 取消映射 symfony 表单上的字段 其他可能的解决方案... 如果实体属性不能是 null(并且您使用 PHP 7.1+),那么应用 可空返回类型声明听起来更像是一种肮脏而快速的解决方法,以维护实体和表单之间的直接数据绑定(使用 Symfony 表单组件)。 更好的全局方法(在我看来)是使用 DTO(数据传输对象)将表单数据绑定与 Doctrine 实体解耦,这是一个简单的 POPO(普通旧 PHP 对象)来包含您的形成数据。 使用 DTO 将允许您在 Doctrine 实体中维护严格的类型提示(不会丢失数据一致性),并将表单数据绑定(还有数据验证)与实体解耦。 DTO 允许重复使用并具有许多其他优点。 有关将 DTO 与 Symfony Forms 一起使用的一些有用参考: DEAD LINK 避免表单中的实体(作者:Iltar van der Berg) DEAD LINK 重新思考表单开发(作者 Iltar van der Berg) Symfony Forms 101(由 Form 组件的创建者 Bernhard Schussek) 不要在 Symfony 表单中使用实体。请改用自定义数据对象 实体应始终有效 如果您使用的是 PHP 7.0,它不支持可为 null 的返回类型声明,则第一个选项将是正确的(非 hacky)选择。如果您使用 PHP 7.1+,您可以定义一个 可空返回类型声明。 <?php class User { public function getUsername(): ?string {} }
`更换电脑后出现“类的 ArrayAccess 对象中的键“0”不存在”错误
我更换了电脑并尝试将我的项目导入到新电脑上。 我使用 Symfony(旧电脑上使用 6 个,新电脑上使用 7 个)。在导入所有数据之前,我使用 Doctrine 在本地重新创建数据库...
Symfony 从 String 类声明中获取 className 对象
我有这段代码,它返回第二行中声明的 className 的列名称: 公共函数 listColumns(EntityManagerInterface $em ) { $class = $em->getClassMetadata(Assure::cla...
如何在 postRemove 事件期间获取实体的对象 id?
我有这样的事情: 公共函数 postRemove(LifecycleEventArgs $args) { $entity = $args->getObject(); $实体->getId(); } $entity 拥有所选的所有属性
Doctrine(2.12) 使用 columnDefinition 不断为属性生成相同的迁移
我创建了一个 apiplatform 3.0、symfony 6.1 应用程序。 它有一个带有mysql 8.0的docker环境。 使用原则 2.11 中的新功能,我创建了 2 个属性: 特征 特征名称 { #[ORM\列(插入...
我正在使用 Symfony 6 和 API 平台,在使用计算连接表的列对我的实体进行排序时遇到了一些困难。 这是表格 公司 +----+------------+--------------+---------...