你好,当我想使用自定义存储库功能时,我有一些问题。
在我的应用程序中,我使用2个数据库,1个oracle(只读)和1个mariadb(应用程序数据)。
我想在Structure实体(oracle)上使用自定义存储库功能,但它不工作。@ORM\Entity
在Structure注释上,只需在其中建立函数,如find(),findAll()......但我的自定义函数却找不到它。@ORM\Entity(repositoryClass="App\Repository\Echange\StructureRepository")
现在没有任何功能工作。我刚刚得到这个 SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ECH_PERS.STRUCTURE' doesn't exist
这是我的代码。如果你想知道解决方案。谢谢。
StructureRepository.php
public function findByLlStructure($ll)
{
return $this->createQueryBuilder('s')
->andWhere('s.llStructure LIKE :val')
->setParameter('val', '%'.$ll.'%')
->getQuery()
->getResult()
;
}
Controller.php
$em = $this->getDoctrine()->getManager('oracle');
$result = $em->getRepository(Structure::class)->findByLlStructure('value');
dump($result);
Structure.php
/**
* Structure
* @ORM\Table(name="ECH_PERS.STRUCTURE", uniqueConstraints={@ORM\UniqueConstraint(name="UK_STRUCTURE_C_STRUCTURE", columns={"C_STRUCTURE"})})
* @ORM\Entity
*/
class Structure
解决方法 : 我通过将我的实体仓库移动到单独的文件夹中,像这样解决。
EntityMariaDB, EntityOracle
RepositoryMariaDB,RepositoryOracle。
我确实有一个类似的问题。修正了我的oracle表,并为实体声明模式,如。
/**
* @ORM\Entity(repositoryClass="App\Repository\TestRepository")
* @ORM\Table(schema="test")
*/
class Test