gpt4 book ai didi

php - 如何从学说中的连接表中检索结果

转载 作者:行者123 更新时间:2023-11-29 13:24:57 26 4
gpt4 key购买 nike

我正在使用当前 symfony 版本中捆绑的原则在两个表之间进行连接。这是我的 Controller 代码:

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Acme\GearDBBundle\Entity\TbGear;
use Acme\GearDBBundle\Entity\TbDships;

class DefaultController extends Controller
{
public function indexAction()
{
$repository = $this->getDoctrine()
->getRepository('AcmeGearDBBundle:TbGear');
$query = $repository->createQueryBuilder('p')
->select('p', 'q')
->innerJoin('p.fkShip', 'q', 'WITH', 'p.fkShip = q.id')
->getQuery();

$result = $query->getResult();

foreach ( $result as $p ) {
$gear[] = array('shortname' => $p->getGearShortName(), 'name' => $p->getGearName(), 'shipname' => $p->getShipName /* Does not work, since the getter is in a different entity */);
}

return $this->render('AcmeGearDBBundle::index.html.twig', array('gear' => $gear));
}
}

由此生成的查询是正确的,如果我在 phpmyadmin 中执行它,它会提供预期的字段。

SELECT t0_.GEAR_NAME AS GEAR_NAME0, t0_.GEAR_SHORT_NAME AS GEAR_SHORT_NAME1, t0_.STATUS AS STATUS2, t0_.ID AS ID3, t1_.SHIP_NAME AS SHIP_NAME4, t1_.CONTACT_NAME AS CONTACT_NAME5, t1_.CONTACT_EMAIL AS CONTACT_EMAIL6, t1_.ID AS ID7, t0_.FK_SHIP_ID AS FK_SHIP_ID8, t0_.FK_TYPE AS FK_TYPE9 
FROM tb_gear t0_
INNER JOIN tb_dships t1_ ON t0_.FK_SHIP_ID = t1_.ID
AND (t0_.FK_SHIP_ID = t1_.ID)

但是,我不知道如何访问返回的结果集中的这些字段。我期望它的工作方式(通过访问连接表实体的 getter )不起作用。错误消息如下: FatalErrorException: Error: Call to undefined method Acme\GearDBBundle\Entity\TbGear::getShipName() in/var/www/symfony/src/Acme/GearDBBundle/Controller/DefaultController.php line 24这是有道理的,因为 TbGear 实体没有名为 getShipName() 的 getter 方法,因为这是来自连接实体的方法。但我如何访问这些值呢?这可能是一个愚蠢的问题,但我就是无法弄清楚。如有任何帮助,我们将不胜感激。

最佳答案

$p->getFkShip()->getShipName() 也许?

这应该有效,因为它只会检索满足您关系的TbGear。因此,您可以访问所有应该只有一个的 FkShip (我认为这是多对一关系),然后......您明白了!

编辑

当然,我认为您已经正确设计了您的类,以便您拥有来自 TbGear 的 getter 来访问与 FkShip 的关系

关于php - 如何从学说中的连接表中检索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com