0
我重新编码的旧的Web应用程序与Symfony的3,我必须处理原则(不是最有趣的部分对我来说:/)主义和左的连接
我想从一个文件与另一个表中的权利表:
-
每用户文件
- 未正确的(唯一索引,以确保)
- 一个文件可以有多个用户权限
下面是MySQL的查询(非常基本的我必须说)
这样做,与教义,我有我的2个实体“文件”和“FileRights”
的目标是要做到这一点在我的控制器:
$file = $em->getRepository('AppBundle:File')->getFile($code, $this->getUser());
if (!is_null($file) && !is_null($file->getRights()) {
dump($file->getRights()->getAccessType());
}
和库看起来像这样:
public function getFile($code, $user) {
return $this->createQueryBuilder('f')
->select('f, fr')
->leftJoin('f.rights', 'fr', Expr\Join::WITH, 'fr.user = :userId')
->where('f.code = :code')
->setParameter('userId', $user)
->setParameter('code', $code)
->getQuery()
->getOneOrNullResult();
}
但我不知道要放在实体中...我尝试了这样的事情b UT不工作...
File.php
class File
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer", options={"unsigned"=true})
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="code", type="string", unique=true, length=20)
*/
private $code;
...
/**
* @var \AppBundle\Entity\FileRights
*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\FileRights", mappedBy="file")
*/
private $rights;
FileRights.php
class FileRights
{
...
/**
* @var \AppBundle\Entity\File
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\File")
* @ORM\Column(name="file_id", type="string", length=20)
*/
private $file;
,但我有此错误:
注意:未定义指数:文件
你能帮我解决这个非常简单的案例吗?
谢谢
在黑暗中只是一个镜头:在File.php的“@var \ AppBundle \ Entity \ FileRights“可能被一个Collection取代(因为它是OneToMany关系)。你试过这个吗? – falkodev
哪个操作会触发此错误? –
我想你正在使用'dev'环境。错误页面必须显示有关行号的文件详细信息。另外,我觉得你必须在'$ file' orm配置中提到'inversedBy =“rights”'作为它的双向关系。并且'JoinColumn-file_id'的数据类型必须与'File'的主键相似,即整数。 – Jeet