Zend framework 原则2“;“类不存在”;坚持

Zend framework 原则2“;“类不存在”;坚持,zend-framework,doctrine-orm,one-to-many,many-to-one,persist,Zend Framework,Doctrine Orm,One To Many,Many To One,Persist,所以我有两个类,它们之间有一对一和多对一的关系: namespace RM\Entity; use Doctrine\Common\Collections\ArrayCollection; /** * @Table(name="users") * @Entity * @author Csabi */ class User { /** * @Id * @Column(name="id", type="integer", nullable=false)

所以我有两个类,它们之间有一对一和多对一的关系:

namespace RM\Entity; use Doctrine\Common\Collections\ArrayCollection; /** * @Table(name="users") * @Entity * @author Csabi */ class User { /** * @Id * @Column(name="id", type="integer", nullable=false) * @GeneratedValue(strategy="IDENTITY") * @OneToMany(targetEntity="JobListing", mappedBy="ownerId", orphanRemoval=true) */ private $id; /** * @var string $displayname * @Column(type="string", nullable=false) */ private $displayname; } 名称空间RM\Entity; 使用条令\Common\Collections\ArrayCollection; /** *@Table(name=“users”) *@实体 *@作者Csabi */ 类用户{ /** *@Id *@Column(name=“id”,type=“integer”,nullable=false) *@GeneratedValue(strategy=“IDENTITY”) *@OneToMany(targetEntity=“joblinging”,mappedBy=“ownerId”,orphanRemoving=true) */ 私人$id; /** *@var string$displayname *@Column(type=“string”,nullable=false) */ 私有$displayname; } 及

名称空间RM\Entity; 使用条令\Common\Collections\ArrayCollection; /** *@Table(name=“作业列表”) *@Entity(repositoryClass=“RM\Entity\Repository\JobListingRepository”) *@作者Csabi */ 班级工作清单{ /** *@var整数$id *@Column(name=“id”,type=“integer”,nullable=false) *@Id *@GeneratedValue(strategy=“IDENTITY”) */ 私人$id; /** *@var用户 *@ManyToOne(targetEntity=“User”,cascade={“persist”}) *@JoinColumns({ *@JoinColumn(name=“ownerId”,referencedColumnName=“id”,nullable=false) * }) */ 私有$所有者ID; 但是,保存作业列表时,在“持久化”上会抛出以下错误:

Application error Exception information: Message: Class does not exist Stack trace: #0 library\Doctrine\ORM\Mapping\ClassMetadata.php(67): ReflectionClass->__construct(false) #1 library\Doctrine\ORM\Mapping\ClassMetadataFactory.php(350): Doctrine\ORM\Mapping\ClassMetadata->__construct(false) #2 library\Doctrine\ORM\Mapping\ClassMetadataFactory.php(260): Doctrine\ORM\Mapping\ClassMetadataFactory->newClassMetadataInstance(false) #3 library\Doctrine\ORM\Mapping\ClassMetadataFactory.php(169): Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata(false) #4 library\Doctrine\ORM\EntityManager.php(247): Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor(false) #5 library\Doctrine\ORM\UnitOfWork.php(1222): Doctrine\ORM\EntityManager->getClassMetadata(false) #6 library\Doctrine\ORM\UnitOfWork.php(1678): Doctrine\ORM\UnitOfWork->doPersist(1, Array) #7 library\Doctrine\ORM\UnitOfWork.php(1252): Doctrine\ORM\UnitOfWork->cascadePersist(Object(RM\Entity\JobListing), Array) #8 library\Doctrine\ORM\UnitOfWork.php(1201): Doctrine\ORM\UnitOfWork->doPersist(Object(RM\Entity\JobListing), Array) #9 library\Doctrine\ORM\EntityManager.php(454): Doctrine\ORM\UnitOfWork->persist(Object(RM\Entity\JobListing)) #10 library\RM\Entity\JobListingService.php(54): Doctrine\ORM\EntityManager->persist(Object(RM\Entity\JobListing)) #11 application\controllers\JobListingController.php(28): RM\Entity\JobListingService->saveJobListing(Object(RM\Entity\JobListing)) #12 library\Zend\Controller\Action.php(516): JobListingController->addAction() 应用程序错误 例外信息: 消息:类不存在 堆栈跟踪: #0 library\doctor\ORM\Mapping\ClassMetadata.php(67):ReflectionClass->\uuu构造(false) #1 library\doctor\ORM\Mapping\ClassMetadataFactory.php(350):doctor\ORM\Mapping\ClassMetadata->\uu构造(false) #2 library\doctor\ORM\Mapping\ClassMetadataFactory.php(260):doctor\ORM\Mapping\ClassMetadataFactory->newClassMetadataInstance(false) #3 library\doctor\ORM\Mapping\ClassMetadataFactory.php(169):doctor\ORM\Mapping\ClassMetadataFactory->loadMetadata(false) #4 library\doctor\ORM\EntityManager.php(247):doctor\ORM\Mapping\ClassMetadataFactory->getMetadataFor(false) #5 library\doctor\ORM\UnitOfWork.php(1222):doctor\ORM\EntityManager->getClassMetadata(false) #6 library\doctor\ORM\UnitOfWork.php(1678):doctor\ORM\UnitOfWork->doPersist(1,数组) #7 library\doctor\ORM\UnitOfWork.php(1252):doctor\ORM\UnitOfWork->cascadepsist(对象(RM\Entity\jobling),数组) #8 library\doctor\ORM\UnitOfWork.php(1201):doctor\ORM\UnitOfWork->doPersist(对象(RM\Entity\jobling),数组) #9 library\doctor\ORM\EntityManager.php(454):doctor\ORM\UnitOfWork->persist(对象(RM\Entity\jobling)) #10 library\RM\Entity\JobListingService.php(54):条令\ORM\EntityManager->persist(对象(RM\Entity\JobListing)) #11 application\controllers\JobListingController.php(28):RM\Entity\JobListingService->saveJobListing(对象(RM\Entity\JobListing)) #12 library\Zend\Controller\Action.php(516):JobListingController->addAction()
这里缺少什么?

您无法定义主键上的关系。请尝试在用户类中添加另一个字段:

/**
 * @Table(name="users")
 * @Entity
 * @author Csabi
 */
class User {

    /**
     * @Id
     * @Column(name="id", type="integer", nullable=false)
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @OneToMany(targetEntity="JobListing", mappedBy="ownerId", orphanRemoval=true)
     */
    private $jobListings;

    /**
     * @var string $displayname
     * @Column(type="string", nullable=false)
     */
    private $displayname;
}

问题实际上出在我试图保存的对象上。我没有将整个用户实体传递给ownerId,只有用户的id

那么什么时候该方法呢

Doctrine\ORM\UnitOfWork->doPersist(1, Array)
它实际上是试图保存一个数字,而不是用户实体


这就是为什么抛出错误“Class not found”,因为没有类“1”。

我这样做了,但它仍然给出相同的异常
Doctrine\ORM\UnitOfWork->doPersist(1, Array)