gpt4 book ai didi

php - 从未导入属性中的注释 "@OneToMany"(Doctrine2)

转载 作者:可可西里 更新时间:2023-11-01 12:25:36 25 4
gpt4 key购买 nike

我正在使用 Doctrine 2 作为 Slim 3 的 ORM,但是当我尝试实现双向关系时,我一直卡在对象映射部分

/**
* Class Resource
* @package App
* @ORM\Entity
* @ORM\Table(name="users", uniqueConstraints={@ORM\UniqueConstraint(name="user_id", columns={"user_id"})}))
*/
class User
{
/**
* @ORM\ManyToOne(targetEntity="UserRoles", inversedBy="users")
* @ORM\JoinColumn(name="role_id", referencedColumnName="user_role_id")
*/
protected $user_role;
}

/**
* Class Resource
* @package App
* @ORM\Entity
* @ORM\Table(name="user_roles", uniqueConstraints={@ORM\UniqueConstraint(name="user_role_id", columns={"user_role_id"})}))
*/
class UserRoles
{
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="user_role")
*/
protected $users;

public function __construct()
{
$this->users = new ArrayCollection();
}
}

当我尝试 php vendor/bin/doctrine orm:schema-tool:update --force 时出现异常

输出是:

[Doctrine\Common\Annotations\AnnotationException][Semantical Error] The annotation "@OneToMany" in property App\Entity\UserRoles::$users was never imported. Did you maybe forget to add a "use" statement for this annotation?

最佳答案

Doctrine 课如

Doctrine\ORM\Mapping 命名空间的一部分。

您应该使用 ORM 作为别名导入此命名空间。然后你应该在这些类的前面添加@ORM作为注解来使它们工作。

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\ManyToOne(...)
* @ORM\JoinColumn(...)
*/

如果您只想使用这些类中的每一个,则必须分别导入它们。

use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\JoinColumn;

/**
* @ManyToOne(...)
* @JoinColumn(...)
*/

关于php - 从未导入属性中的注释 "@OneToMany"(Doctrine2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39720946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com