当前位置: 首页 > 知识库问答 >
问题:

不能让ManyToOne工作

丰景同
2023-03-14

我怎样才能解决这个问题?

<?php

namespace entity;

/**
 * @Entity @Table(name="debt")
 * */
class Debt {

/**
 * @Id @Column(type="integer") @GeneratedValue
 * */
protected $id;

/**
 * @Column(type="integer")
 * */
protected $value;

/**
 * @ManyToOne(targetEntity="people", inversedBy="debts")
 * */
protected $who;

public function setValue($value) {
    $this->value = $value;
}

public function setWho(Who $who) {
    $this->who = $who;
}
public function getValue() {
    return $this->value;
}
public function getWho() {
    return $this->who;
}

}

<?php

namespace entity;

/**
 * @Entity @Table(name="people")
 * */
class People {

/**
 * @Id @Column(type="integer") @GeneratedValue
 * */
protected $id;

/**
 * @Column(type="string")
 * */
protected $name;

/**
 * @OneToMany(targetEntity="debt", mappedBy="who")
 * */
protected $debts;

public function setName($name) {
    $this->name = $name;
}

public function assignDebt(Debt $debt) {
    $this->debts[] = $debt;
}

public function getName() {
    return $this->name;
}

public function getDebts() {
    return $this->debts;
}

}

当我尝试时:$em-

警告:需要(C:\Windows\TEMP__CG__entitypeople.php):未能打开流:在第92行的C:\xampp\htdocs\skola\供应商\原则\orm\lib\Doctrine\ORM\Proxy\ProxyFactory.php中没有这样的文件或目录

致命错误:require():无法在第92行的C:\xampp\htdocs\skola\vendor\doctrine\orm\Proxy\factory.php中打开所需的“C:\Windows\TEMP\uuuu CG\uu entitypele.php”(include\u path=”;C:\xampp\php\pear;C:\xampp\php\pear”)

此外,当我删除此部分时,它也会起作用:

/**
 * @ManyToOne(targetEntity="people", inversedBy="debts")
 * */
protected $who;

共有2个答案

丌官信厚
2023-03-14

您必须首先设置代理类的生成。您可以通过设置config:$config启用自动生成原则代理类-

$config = new Configuration;
$config->setMetadataCacheImpl($cache);
$driverImpl = $config->newDefaultAnnotationDriver('/path/to/lib/MyProject/Entities');
$config->setMetadataDriverImpl($driverImpl);
$config->setQueryCacheImpl($cache);
$config->setProxyDir('/path/to/myproject/lib/MyProject/Proxies');
$config->setProxyNamespace('MyProject\Proxies');

if ($applicationMode == "development") {
    $config->setAutoGenerateProxyClasses(true);
} else {
    $config->setAutoGenerateProxyClasses(false);
}
束阳旭
2023-03-14

您需要在Doctrine中设置代理目录

该目录用于编写教义的代理,当然需要有写入权限

http://docs.doctrine-project.org/en/2.0.x/reference/configuration.html#proxy-所需目录

 类似资料:
  • 它说不能解析符号AdRequest和不能解析adview。我做错了什么?在我的主活动文件中包括以下内容 此外,我还为build.gradle添加了以下内容 编辑 我现在知道问题出在哪里,但无法解决。我已经从项目结构中启用了Admob,它已经添加了 在大楼里。格雷德尔。我检查了一个横幅示例,示例在外部库中有播放服务,但它没有出现在我的应用程序中。

  • 我是Micronaut和Gradle的新手,在尝试获得简单的控制器应用程序设置时遇到了一些问题。我可以运行该应用程序,但测试不起作用。我想这一定是由于我的gradle配置。 我的所有类都存在于同一个包中。 这是我的简单应用测试: 和我的简单应用程序: 我可以很好地运行应用程序。但当我尝试使用这些测试时,会出现以下错误: 我的控制器测试也有类似的错误 我的控制器测试类: 这里是错误 以下是我的相关G

  • 我正在试验把杰克逊和龙目岛结合起来。这些是我的课: 这些是我添加到类spth中的JAR: > 龙目岛:https://projectlombok.org/downloads/lombok.jar(1.16.10version) 此外,Netbeans项目被配置为“保存时不编译”、“生成调试信息”、“报告不推荐使用的API”、“跟踪java依赖项”、“Activacte注释处理”和“编辑器中的Act

  • 我有一个这样的家长班 像这样的孩子 现在我想讲述另一个班级的孩子,像这样 它总是给我以下错误: [教义\通用\注释\注释异常] [创建错误]在属性zmpim\Entity\Fiel$value上声明的注释@ORM\ManyToOned::没有名为"mappdBy"的属性。可用属性:塔吉特实体,级联,获取,反转 两者都得到了mappdby,...所以这个错误似乎是毫无意义的 更新: 字段有值和标签。

  • 问题内容: 注意:我正在使用virtualenvwrapper。 激活虚拟环境之前: 激活虚拟环境后: 问题答案: 您可能已经在系统上安装了lxml,可能是由于系统软件包而安装的。因此,第一次尝试(没有活动的virtualenv)不会失败,但是也不会安装它。它真的什么也没做。 在virtualenv中,默认情况下,系统软件包将被忽略。因此,pip认为未安装lxml。因此,它将尝试将其安装到您的虚拟