doctrine 相关问题

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

我可以在 Symfony 中为同一个模型类创建多个表单吗?

想象一下,我们有一个类 Customer 的注册表单,我们只询问三个字段(姓名、电子邮件),之后,当该用户第一次登录时,我们想要填写此信息。 首先,...

回答 3 投票 0

如何使用Doctrine 2中的OneToMany关系更新记录?

我有一个用户实体,我正在尝试从 UserService 更新它。当我尝试更新设置为数组集合的属性时,问题就出现了。 /** * * @param \Doctring\Common\Colle...

回答 2 投票 0

Symfony 6 / Doctrine / 迁移:[错误] 数据库模式与当前映射文件不同步

我在 Symfony 6.2 中构建了一个应用程序并让它在 Raspberry Pi 上运行。以下是先决条件: 当地的: 操作系统:Ubuntu 20.04.6 LTS DB:版本 15.1 分发 10.10.5-MariaDB PHP:8.2.7 服务器(Pi): 操作系统:德...

回答 1 投票 0

APC 不保存 fosuserbundle 扩展类中的属性

我在将我的 Article 实体与 User (扩展 FosUserBundle 类)连接时遇到问题。当我查询数据库时它工作得很好,但是当我使用 APC 时: $driver = \Doctrine\Common\Cache\ApcC...

回答 1 投票 0

phpunit 测试期间 symfony 学说的奇怪行为 - 数据库中的字段变为空

我正在使用 交响乐 v6.4.8 学说/规则 2.19.5 phpunit/phpunit 9.6.19 我在 Symfony 中构建了一个 REST API GET 端点 /api/contract/{$id} 。 它在另一个系统上执行 API 请求,接收...

回答 1 投票 0

配置 Rector 并使用 symfony 6/php8 的简单规则

我想使用 Rector 重构我的代码,因为我将我的项目更新为 symfony 5.4 到 6.1。 我的php项目版本:8.1.5 所以,我想使用一个简单的规则将我的注释更改为属性 w...

回答 5 投票 0

摆脱复杂实体关系的循环引用(Symfony 6.4)

当我想要规范化对象宽度 ObjectNormalizer 和 Serializer 时,我的应用程序中有一个循环引用错误,但我无法摆脱它。 我已经这样做过好几次了,但是这个应用程序更方便......

回答 1 投票 0

如何解决添加需要属性 @ManyToOne(..,cascade={"persist"}) 的新对话时的错误

我收到此错误: 通过关系“App\Entity\ReseauxSociaux\Conversation#utilisateur1”找到了一个新实体,该实体未配置为实体 John_Doe 的级联持久操作。至

回答 1 投票 0

更新与学说和 Symfony 2.7 的关联

我想知道是否存在一种更好的方法来更新来自相反方实体的学说中的关联,在这种情况下,它是多对多类型,但也可能是另一种类型。 这是我使用的方法: $

回答 1 投票 0

Carbon\Carbon 类中的注释“@mixin”从未被导入

我使用 PHP 8.1 将 Symfony 项目从 5.2 迁移到 5.4。我使用 Carbon nesbot/carbon。 我有错误。 [语义错误] Carbon\Carbon 类中的注释“@mixin” 从来没有重要过...

回答 2 投票 0

如何让数据库在 Symfony 上运行

目标: 我试图简单地使用 Symfony 中的学说创建一个数据库。 我的项目安装在 xampp>htdocs 中 我努力了: 我的 apache 服务器正在运行并且可以查看我的站点位置...

回答 3 投票 0

Symfony 1.4 FormFilter:如何添加“不为空”复选框?

我在模型的一个类上使用了 FormFilter,它对我来说非常有用。但我需要一个似乎不存在的功能。 我已经使用“with_empty”选项在

回答 2 投票 0

Doctrine 通过 join OneToMany 来连接实体

我有一个名为“Sections”的实体,其中包含: /** * @ORM\OneToMany(targetEntity =“产品”,mappedBy =“部分”) */ 受保护的$产品; 名为 Product 的实体具有: /** * @ORM\OneToMany(

回答 4 投票 0

如何使用getQuery()->getOneOrNullresult()返回

在我的测试项目中我有2个实体: 最终用户(FOSUserBundle 的扩展) Rezo(将包含两名成员之间经批准的关系) 这两个实体都被定义为: 最终用户实体: 在我的测试项目中,我有 2 个实体: EndUser(FOSUserBundle 的扩展) Rezo(将包含两个成员之间经批准的关系) 这两个实体都被定义为: EndUser实体: <?php namespace Core\CustomerBundle\Entity; use Doctrine\ORM\Mapping as ORM; use FOS\UserBundle\Model\User as BaseUser; use Symfony\Component\Validator\Constraints as Assert; /** * EndUser * * @ORM\Table() * @ORM\Entity(repositoryClass="Core\CustomerBundle\Entity\EndUserRepository") */ class EndUser extends BaseUser { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var string * @ORM\Column(name="firstname", type="string", length=255) */ private $firstname; /** * @var string * @ORM\Column(name="lastname", type="string", length=255) */ private $lastname; /** * @var \DateTime * * @ORM\Column(name="DateNaissance", type="datetime", nullable=true) */ private $DateNaissance; /** * @ORM\OneToOne(targetEntity="Core\CustomerBundle\Entity\EndUser", cascade={"persist", "merge", "remove"}) * @ORM\JoinColumn(name="adressbook_id", referencedColumnName="id", nullable=true) */ private $adressbook; /** * @ORM\ManyToMany(targetEntity="Core\MyEquiBookBundle\Entity\Discipline", mappedBy="endusers") */ private $disciplines; /** * @ORM\ManyToMany(targetEntity="Core\MyEquiBookBundle\Entity\Experiences", mappedBy="endusers") */ private $experiences; /** * @var string * @ORM\Column(name="avatar", type="string", length=255, nullable=true) */ private $avatar; /** * @var string * @ORM\Column(name="repository", type="string", length=255, nullable=true) */ private $repository; /** * @ORM\OneToMany(targetEntity="Core\MyEquiBookBundle\Entity\NiveauEndUser", mappedBy="enduser", cascade={"remove", "persist"}) */ protected $niveaux; /** * @ORM\OneToMany(targetEntity="Core\GeneralBundle\Entity\Rezo", mappedBy="enduser", cascade={"remove", "persist"}) */ protected $friends; /** * Constructor */ public function __construct() { parent::__construct(); $this->disciplines = new \Doctrine\Common\Collections\ArrayCollection(); $this->niveaux = new \Doctrine\Common\Collections\ArrayCollection(); $this->experiences = new \Doctrine\Common\Collections\ArrayCollection(); $this->friends = new \Doctrine\Common\Collections\ArrayCollection(); $this->expiresAt = new \DateTime("+1 year"); $this->credentialsExpireAt = new \DateTime("+1 year"); } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set avatar * * @param string $avatar * @return EndUser */ public function setAvatar($avatar) { $this->avatar = $avatar; return $this; } /** * Get avatar * * @return string */ public function getAvatar() { return $this->avatar; } /** * Set repository * * @param string $repository * @return EndUser */ public function setRepository($repository) { $this->repository = $repository; return $this; } /** * Get repository * * @return string */ public function getRepository() { return $this->repository; } /** * Set adressbook * * @param \Core\CustomerBundle\Entity\EndUser $adressbook * @return EndUser */ public function setAdressbook(\Core\CustomerBundle\Entity\EndUser $adressbook = null) { $this->adressbook = $adressbook; return $this; } /** * Get adressbook * * @return \Core\CustomerBundle\Entity\EndUser */ public function getAdressbook() { return $this->adressbook; } /** * Add disciplines * * @param \Core\MyEquiBookBundle\Entity\Discipline $disciplines * @return EndUser */ public function addDiscipline(\Core\MyEquiBookBundle\Entity\Discipline $disciplines) { $this->disciplines[] = $disciplines; return $this; } /** * Remove disciplines * * @param \Core\MyEquiBookBundle\Entity\Discipline $disciplines */ public function removeDiscipline(\Core\MyEquiBookBundle\Entity\Discipline $disciplines) { $this->disciplines->removeElement($disciplines); } /** * Get disciplines * * @return \Doctrine\Common\Collections\Collection */ public function getDisciplines() { return $this->disciplines; } /** * Add niveaux * * @param \Core\MyEquiBookBundle\Entity\NiveauEndUser $niveaux * @return EndUser */ public function addNiveaux(\Core\MyEquiBookBundle\Entity\NiveauEndUser $niveaux) { $this->niveaux[] = $niveaux; return $this; } /** * Remove niveaux * * @param \Core\MyEquiBookBundle\Entity\NiveauEndUser $niveaux */ public function removeNiveaux(\Core\MyEquiBookBundle\Entity\NiveauEndUser $niveaux) { $this->niveaux->removeElement($niveaux); } /** * Get niveaux * * @return \Doctrine\Common\Collections\Collection */ public function getNiveaux() { return $this->niveaux; } /** * Add experiences * * @param \Core\MyEquiBookBundle\Entity\Experiences $experiences * @return EndUser */ public function addExperience(\Core\MyEquiBookBundle\Entity\Experiences $experiences) { $this->experiences[] = $experiences; return $this; } /** * Remove experiences * * @param \Core\MyEquiBookBundle\Entity\Experiences $experiences */ public function removeExperience(\Core\MyEquiBookBundle\Entity\Experiences $experiences) { $this->experiences->removeElement($experiences); } /** * Get experiences * * @return \Doctrine\Common\Collections\Collection */ public function getExperiences() { return $this->experiences; } /** * Add friends * * @param \Core\GeneralBundle\Entity\Rezo $friends * @return EndUser */ public function addFriend(\Core\GeneralBundle\Entity\Rezo $friends ) { $this->friends[] = $friends; return $this; } /** * Remove friends * * @param \Core\GeneralBundle\Entity\Rezo $friends */ public function removeFriend(\Core\GeneralBundle\Entity\Rezo $friends) { $this->friends->removeElement($friends); } /** * Get friends * * @return \Doctrine\Common\Collections\Collection */ public function getFriends() { return $this->friends; } /** * Set firstname * * @param string $firstname * @return EndUser */ public function setFirstname($firstname) { $this->firstname = $firstname; return $this; } /** * Get firstname * * @return string */ public function getFirstname() { return $this->firstname; } /** * Set lastname * * @param string $lastname * @return EndUser */ public function setLastname($lastname) { $this->lastname = $lastname; return $this; } /** * Get lastname * * @return string */ public function getLastname() { return $this->lastname; } /** * Set DateNaissance * * @param \DateTime $dateNaissance * @return EndUser */ public function setDateNaissance($dateNaissance) { $this->DateNaissance = $dateNaissance; return $this; } /** * Get DateNaissance * * @return \DateTime */ public function getDateNaissance() { return $this->DateNaissance; } } Rezo实体: <?php namespace Core\GeneralBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Rezo * * @ORM\Table() * @ORM\Entity(repositoryClass="Core\GeneralBundle\Entity\RezoRepository") */ class Rezo { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var \DateTime * * @ORM\Column(name="RequestedDate", type="datetime") */ private $requestedDate; /** * @var \DateTime * * @ORM\Column(name="AcceptedDate", type="datetime", nullable=true) */ private $acceptedDate; /** * @ORM\ManyToOne(targetEntity="Core\CustomerBundle\Entity\Enduser", inversedBy="friends", cascade={"refresh"}) * @ORM\JoinColumn(name="user_id", referencedColumnName="id") */ protected $enduser; /** * @ORM\ManyToOne(targetEntity="Core\CustomerBundle\Entity\EndUser", cascade={"refresh"}) * @ORM\JoinColumn(name="friendwith", referencedColumnName="id") */ protected $friendwith; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set requestedDate * * @param \DateTime $requestedDate * @return Rezo */ public function setRequestedDate($requestedDate) { $this->requestedDate = $requestedDate; return $this; } /** * Get requestedDate * * @return \DateTime */ public function getRequestedDate() { return $this->requestedDate; } /** * Set acceptedDate * * @param \DateTime $acceptedDate * @return Rezo */ public function setAcceptedDate($acceptedDate) { $this->acceptedDate = $acceptedDate; return $this; } /** * Get acceptedDate * * @return \DateTime */ public function getAcceptedDate() { return $this->acceptedDate; } /** * Set enduser * * @param \Core\CustomerBundle\Entity\EndUser $enduser * @return Rezo */ public function setEnduser(\Core\CustomerBundle\Entity\EndUser $enduser = null) { $this->enduser = $enduser; return $this; } /** * Get enduser * * @return \Core\CustomerBundle\Entity\EndUser */ public function getEnduser() { return $this->enduser; } /** * Set friendwith * * @param \Core\CustomerBundle\Entity\EndUser $friendwith * @return Rezo */ public function setFriendwith(\Core\CustomerBundle\Entity\EndUser $friendwith = null) { $this->friendwith = $friendwith; return $this; } /** * Get friendwith * * @return \Core\CustomerBundle\Entity\EndUser */ public function getFriendwith() { return $this->friendwith; } 当我跑步时: 应用程序/控制台学说:架构:更新--force 已创建以下 MySQL 表: CREATE TABLE IF NOT EXISTS `Rezo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `friendwith` int(11) DEFAULT NULL, `RequestedDate` datetime NOT NULL, `AcceptedDate` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `IDX_681FC4BA76ED395` (`user_id`), KEY `IDX_681FC4B1094AD75` (`friendwith`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 在RezoController.php控制器中,我想给最终用户接受联系请求的机会,我创建了一个名为:acceptnewrequestAction($id)的函数 public function acceptnewrequestAction($id){ $em = $this->getDoctrine()->getManager(); $rezo = $em->getRepository('CoreGeneralBundle:Rezo')->find($id); $user1 = $rezo->getEnduser(); $user2 = $rezo->getFriendwith(); $dateRequest = $rezo->getRequestedDate(); $rezo->setAcceptedDate(new \DateTime('now')); $em->persist($rezo); $em->flush(); /* check if inverse relation exist */ $query = $em->CreateQuerybuilder(); $query->select('t0.id'); $query->from('CoreGeneralBundle:Rezo','t0'); $query->where('t0.acceptedDate IS NULL'); $query->andWhere('t0.enduser = :userId'); $query->andWhere('t0.friendwith =:userId2'); $query->SetParameters(array('userId'=> $user2, 'userId2'=>$user1)); $result = $query->getQuery()->getOneOrNullResult(); if ( is_object($result)) { $rezo = $em->getRepository('CoreGeneralBundle:Rezo')->findById($result->getId()); $rezo->setAcceptedDate(new \DateTime('now')); } else { $rezo = new Rezo(); $rezo->setRequestedDate(new \Datetime('now')); $rezo->setAcceptedDate(new \DateTime('now')); $rezo->Setenduser($user2); $rezo->setFriendwith($user1); } $em->persist($rezo); $em->flush(); return $this->render(controller('CoreGeneralBundle:Rezo:RezoList')); } 我想知道如何使用结果来知道找到或返回的一个对象是否为 Null,如果存在则更新它或创建一个新对象。 谢谢您的帮助 getOneOrNullResult方法告诉您是否在数据库中找到了任何记录。 如果它返回 null,则意味着您有一些结果,在您的情况下,您必须插入新的结果。 但是当存在一些记录时,此方法将返回实体的对象实例。这意味着在您的情况下您必须更新现有记录。 请记住,当结果集不唯一时,getOneOrNullResult方法会抛出异常。

回答 1 投票 0

使用新创建/删除的对象更新相关实体的集合(onFlush)

我有以下 Doctrine 实体设置: 主实体类 { /** * @var第二实体[] * * @ORM\OneToMany(targetEntity="SecondEntity",mappedBy="mainEntity",cascade={"pe...

回答 1 投票 0

Symfony2 - 在侧栏中设置标签云

我希望重新创建您通常在博客中看到的标签云侧边栏,其中用户在标签上选择,它会显示具有该特定标签的所有帖子。 现在我在雕像上遇到了麻烦......

回答 2 投票 0

Doctrine 在SchemaCreateTable 事件上添加列

我有一些多对多表关系。 我想自动添加一个新列“created_at”。 在 Symfony 和 Doctrine 文档之后,我厌倦了这个: 应用程序/配置/services_dev.yaml [...] ...

回答 1 投票 0

如何显示具有空关系的条目

所以,我的假设是错误的,花了我时间重新搜索问题,所以我完全编辑了我的问题: 我的问题是,在我的页面中,某些条目没有显示。但出口所有...

回答 1 投票 0

Symfony - ManyToOne 关系中的循环引用错误

我正在使用 Symfony 5 和原则。我有两个具有 ManyToOne 关系的实体(Product 和 ProductImage)。每个产品可以有多个图像,产品实体有 getProductImages() m...

回答 2 投票 0

按共同属性对多个不同实体进行排序

使用 Symfony 5.4.17。 Symfony 新手。 我有三个类似的实体类型,并且想要返回一个名为 Food 的数组,我可以在树枝模板中循环它,如下所示: {% for foodArr %} &l...

回答 1 投票 0

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