【发布时间】:2021-09-03 10:28:07
【问题描述】:
我是 symfony 的新手,我需要加入来自多个数据库的查询。我遇到了许多类似的问题,但我无法解决这个问题。我尝试在存储库中加入查询,但收到错误“在链配置的命名空间 App\Entity\Steuer\StUserSendAuth 中找不到类 'App\Entity\customerdata\CustomerAction' ”。 下面我已经添加了代码,使用了。
我的学说.yaml
doctrine:
dbal:
default_connection: default
connections:
steuer:
# configure these for your database server
url: '%env(resolve:DATABASE_STEUER_URL)%'
driver:
kundendaten:
# configure these for your database server
url: '%env(resolve:DATABASE_CUSTOMERDATA_URL)%'
driver:
orm:
default_entity_manager: default
entity_managers:
steuer:
connection: steuer
mappings:
Steuer:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Steuer'
prefix: 'App\Entity\Steuer'
alias: Steuern
customerdata:
connection: customerdata
mappings:
Customerdata:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Customerdata'
prefix: 'App\Entity\Customerdata'
alias: Customerdata
第一个数据库实体:-
namespace App\Entity\Steuer;
use Doctrine\ORM\Mapping as ORM;
/**
* StUserSendAuth
* @ORM\Entity(repositoryClass="App\Repository\Steuern\StUserSendAuthRepository")
* @ORM\Table(name="st_user_send_auth")
*/
class StUserSendAuth
{
/**
* @var int
*
* @ORM\Column(name="abgabe_sendauth_id", type="integer", nullable=false, options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $abgabeSendauthId = '0';
/**
* @var int
*
* @ORM\Column(name="customeraction_id", type="integer", nullable=false, options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $CustomeractionId = '0';
第二个数据库连接实体:-
namespace App\Entity\customerdata;
use Doctrine\ORM\Mapping as ORM;
/**
* CustomerAction
* @ORM\Entity(repositoryClass="App\Repository\customerdata\CustomerActionRepository")
* @ORM\Table(name="customer_action")
*/
class CustomerAction
{
/**
* @var int
*
* @ORM\Column(name="customeraction_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $CustomeractionId;
加入查询的存储库:-
namespace App\Repository\Steuer;
use App\Entity\Steuer\StUserSendAuth;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method StUserSendAuth|null find($id, $lockMode = null, $lockVersion = null)
* @method StUserSendAuth|null findOneBy(array $criteria, array $orderBy = null)
* @method StUserSendAuth[] findAll()
* @method StUserSendAuth[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
* @method StUserSendAuth|null findstatistikOnline()
*/
class StUserSendAuthRepository extends ServiceEntityRepository
{
/**
* @return StUserSendAuth[] Returns an array of StUserSendAuth objects
*/
public function findstatistikOnline()
{
return $this->getEntityManager()
->createQueryBuilder('s')
->select('p.updatedAt')
->from('App\Entity\Steuern\StUserSendAuth', 'p')
->leftJoin('App\Entity\customerdata\CustomerAction', 'uas', 'WITH', 'uas.CustomeractionId = p.CustomeractionId')
->getQuery()
->getArrayResult()
;
控制器类:-
namespace App\Controller;
use App\Repository\Steuer\StUserSendAuthRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class OnlineAuswertungController extends AbstractController
{
#[Route('/count_statistik/onlineAuswertung', name: 'onlineAuswertung')]
public function index(StUserSendAuthRepositoryRepository $StUserSendAuthRepositoryRepository): Response
{
$Table = $StUserSendAuthRepositoryRepository->findstatistikOnline();
return $this->render('online_auswertung/index.html.twig', [
'controller_name' => 'OnlineAuswertungController',
'table' => $Table,
]);
}
}
请告诉我如何在多个数据库上进行查询。谢谢!
【问题讨论】:
标签: php symfony doctrine-orm doctrine multiple-databases