1

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

我有 3 个表:Reconciliation、ReconciliationItems 和 Products。

对账存储我所有的对账报告。

ReconciliationItems 存储进入报告的所有项目。

Products 存储 ReconciliationItems 的所有产品信息。

ReconciliationItems 表基本布局

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

id = id 在reconciliationItems 表中。

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

对账id = 与对账表中的id相关

我的问题是:

当我访问“ReconciliationItems”的存储库时,我无法直接获取控制器内部的“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。请教育我:)

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

4

2 回答 2

2

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

当您第一次尝试访问此对象时,symfony 会静默执行一个查询并检索具有与产品相同 id 的核心响应模型,因此为了访问 id,您应该按照以下方式进行操作:

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

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

于 2013-09-23T20:07:02.623 回答
1
$checkReconciliationRecords->getProduct()->getId()

弄清楚了!:)

于 2013-09-23T18:12:08.687 回答