Symfony 如何在控制器内部获取 ID


Symfony How Get ID Inside of Controller

我还在学习symfony,所以对这个问题的任何帮助都会很棒!

我有 3 个表:对账、对账项和产品。

对帐

存储我的所有对帐报告。

对帐项存储报表中的所有项。

产品

存储对帐项的所有产品信息。

对帐项表基本布局

 --------------------------------------
 id | product_id | reconciliation_id | 
 --------------------------------------
 1  | 1000       | 4                 |
 --------------------------------------
id

= 对帐项表中的 id。

product_id = 与产品表中的 ID 相关。当我将数据保存到数据库时,此列使用多对一关系来获取 id。

reconciliation_id = 与对帐表中的 ID 相关

我的问题是:

当我访问"对帐项目"的存储库时,我无法直接获取控制器内部的"product_id"。

这是我的代码:

 $getReconciliationRecords = $em->getRepository('WICReconciliationItemBundle:ReconciliationItem')->find(1);
 echo $productId = getReconciliationRecords->getProduct();

这是我得到的错误:

 Catchable Fatal Error: Object of class Proxies'__CG__'WIC'ProductBundle'Entity'Product could not be converted to string in /Applications/MAMP/htdocs/symfonydev/src/WIC/ReconciliationBundle/Controller/ReconciliationController.php line 187

确信我无法直接从 ReconciliationItems 表中获取product_id,因为该信息的数据存储在对象中。我只是不确定如何获取对象数据以获取我的产品 ID。请教育我:)

感谢你们可以提供的任何帮助!

称为延迟加载,这意味着每次查询协调项模型时,symfony都会自动关心两个代理对象一个产品和一个协调。

第一次尝试访问此对象时,Symfony会静默地再执行一个查询,并使用与产品相同的ID检索核心快照模型,因此为了访问ID,您应该执行休耕:

$ReconciliationRecord->getProduct()->getId()

您可以在以下位置了解更多信息:http://symfony.com/doc/current/book/doctrine.html

$checkReconciliationRecords->getProduct()->getId()

想通了! :)