Php Sonata Admin中的查询太多
我有两门课:Php Sonata Admin中的查询太多,php,symfony,doctrine,sonata,doctrine-extensions,Php,Symfony,Doctrine,Sonata,Doctrine Extensions,我有两门课: class Employee { use Knp\DoctrineBehaviors\Model\Translatable\Translatable; //... /** * @ORM\ManyToOne(targetEntity="Employee", inversedBy="employeeSubs") * @ORM\JoinColumn(name="employee_id", referencedColumnName="id",
class Employee
{
use Knp\DoctrineBehaviors\Model\Translatable\Translatable;
//...
/**
* @ORM\ManyToOne(targetEntity="Employee", inversedBy="employeeSubs")
* @ORM\JoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")
**/
protected $employeeMain;
/**
* @ORM\OneToMany(targetEntity="Employee", mappedBy="employeeMain")
*/
protected $employeeSubs;
//...
}
class Room
{
use Knp\DoctrineBehaviors\Model\Translatable\Translatable;
//...
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Employee", inversedBy="rooms")
* @ORM\JoinTable(name="room_employee",
* joinColumns={
* @ORM\JoinColumn(name="room_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="employee_id", referencedColumnName="id")
* }
* )
*/
protected $employees;
//room...
}
这两个类都使用来自Knp\DoctrineBehaviors的翻译,因此我在Sonata Admin(RoomAdmin)中遇到了太多查询的问题
如果我在员工中有关系“一家公司”而没有关系“一家公司”,那么我可以在管理类中:
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
$query
->addSelect('translations, employeeTranslations')
->leftJoin($query->getRootAlias().'.translations', 'translations')
->leftJoin($query->getRootAlias().'.employees', 'Employee')
->leftJoin('Employee.translations', 'employeeTranslations');
return $query;
}
然后,查询的数量就减少了,一切都很好
对于许多人(房间)和一个办公室(员工),这不起作用 我在您的实体中看不到OneTONE关系,请更新发布的代码以查看所有这些详细信息。另一方面,“这不工作。”是多余的,请显示错误或解释发生了什么。对不起,我更新了我的问题。