我还在学习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()
想通了! :)