我正在Doctrine中建立一个新数据库,我想使用一个Many-To-One
关系。
数据库工作得很好,但是我不能在这些类中使用查询。
我遵循了以下文档:
/**
* @Entity @Table
**/
class Section
{
/**
* @Id @Column(type="integer") @GeneratedValue
**/
protected $id;
//...
/**
* @ManyToOne(targetEntity="Manufacturer")
*/
private $manufacturer;
//...
}
/**
* @Entity
**/
class Manufacturer
{
/**
* @Id @Column(type="integer") @GeneratedValue
**/
protected $id;
//...
}
所以我的问题是,我无法对Section
使用任何查询。
要测试,我有一个小程序:
$relation = 'Section';
$rep = $entityManager->getRepository($relation); //here is the problem
$result = $rep->findAll();
foreach ($result as $row) {
echo $row->getName();
}
如果我将$relation
更改为'Manufacturer'
,则可以使用,或者如果我使用其他关系(One-To-One
或Many-To-Many
),也可以。但是我不能使用Many-To-One
(或者使用One-To-Many bidirectional
)。
手动DQL查询无效。
我在这个问题上坐了超过两天,希望您能为我提供帮助。
答案 0 :(得分:0)
要获取具有学说的存储库,您必须传递学说实体的名称。我知道这样做的两种方式(与您的情况有关):
use App\Entity\Section;
$rep = $entityManager->getRepository(Section::class);
$rep = $entityManager->getRepository("App\Entity\Section"); // Path is depending of your application's structure