Doctrine Project是一个开源库和工具的集合,用于处理用PHP编写的数据库抽象和对象关系映射。
我实际上正在测试我用以下代码编写的API代码: 交响乐4 API平台 自由操作系统用户 智威汤逊 我使用 codeption 进行测试,到目前为止一切正常。 对于几个实体,我触发 onFlush 原则回调...
想象一下,我们有一个类 Customer 的注册表单,我们只询问三个字段(姓名、电子邮件),之后,当该用户第一次登录时,我们想要填写此信息。 首先,...
如何使用Doctrine 2中的OneToMany关系更新记录?
我有一个用户实体,我正在尝试从 UserService 更新它。当我尝试更新设置为数组集合的属性时,问题就出现了。 /** * * @param \Doctring\Common\Colle...
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): 操作系统:德...
我在将我的 Article 实体与 User (扩展 FosUserBundle 类)连接时遇到问题。当我查询数据库时它工作得很好,但是当我使用 APC 时: $driver = \Doctrine\Common\Cache\ApcC...
phpunit 测试期间 symfony 学说的奇怪行为 - 数据库中的字段变为空
我正在使用 交响乐 v6.4.8 学说/规则 2.19.5 phpunit/phpunit 9.6.19 我在 Symfony 中构建了一个 REST API GET 端点 /api/contract/{$id} 。 它在另一个系统上执行 API 请求,接收...
配置 Rector 并使用 symfony 6/php8 的简单规则
我想使用 Rector 重构我的代码,因为我将我的项目更新为 symfony 5.4 到 6.1。 我的php项目版本:8.1.5 所以,我想使用一个简单的规则将我的注释更改为属性 w...
当我想要规范化对象宽度 ObjectNormalizer 和 Serializer 时,我的应用程序中有一个循环引用错误,但我无法摆脱它。 我已经这样做过好几次了,但是这个应用程序更方便......
如何解决添加需要属性 @ManyToOne(..,cascade={"persist"}) 的新对话时的错误
我收到此错误: 通过关系“App\Entity\ReseauxSociaux\Conversation#utilisateur1”找到了一个新实体,该实体未配置为实体 John_Doe 的级联持久操作。至
我想知道是否存在一种更好的方法来更新来自相反方实体的学说中的关联,在这种情况下,它是多对多类型,但也可能是另一种类型。 这是我使用的方法: $
Carbon\Carbon 类中的注释“@mixin”从未被导入
我使用 PHP 8.1 将 Symfony 项目从 5.2 迁移到 5.4。我使用 Carbon nesbot/carbon。 我有错误。 [语义错误] Carbon\Carbon 类中的注释“@mixin” 从来没有重要过...
目标: 我试图简单地使用 Symfony 中的学说创建一个数据库。 我的项目安装在 xampp>htdocs 中 我努力了: 我的 apache 服务器正在运行并且可以查看我的站点位置...
Symfony 1.4 FormFilter:如何添加“不为空”复选框?
我在模型的一个类上使用了 FormFilter,它对我来说非常有用。但我需要一个似乎不存在的功能。 我已经使用“with_empty”选项在
Doctrine 通过 join OneToMany 来连接实体
我有一个名为“Sections”的实体,其中包含: /** * @ORM\OneToMany(targetEntity =“产品”,mappedBy =“部分”) */ 受保护的$产品; 名为 Product 的实体具有: /** * @ORM\OneToMany(
如何使用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方法会抛出异常。
我有以下 Doctrine 实体设置: 主实体类 { /** * @var第二实体[] * * @ORM\OneToMany(targetEntity="SecondEntity",mappedBy="mainEntity",cascade={"pe...
我希望重新创建您通常在博客中看到的标签云侧边栏,其中用户在标签上选择,它会显示具有该特定标签的所有帖子。 现在我在雕像上遇到了麻烦......
Doctrine 在SchemaCreateTable 事件上添加列
我有一些多对多表关系。 我想自动添加一个新列“created_at”。 在 Symfony 和 Doctrine 文档之后,我厌倦了这个: 应用程序/配置/services_dev.yaml [...] ...
所以,我的假设是错误的,花了我时间重新搜索问题,所以我完全编辑了我的问题: 我的问题是,在我的页面中,某些条目没有显示。但出口所有...
Symfony - ManyToOne 关系中的循环引用错误
我正在使用 Symfony 5 和原则。我有两个具有 ManyToOne 关系的实体(Product 和 ProductImage)。每个产品可以有多个图像,产品实体有 getProductImages() m...