2013-09-23 87 views
1

我仍然在学习symfony,所以对这个问题的任何帮助都会很棒!Symfony如何在控制器中获取ID

我有3个表格:Reconciliation,ReconciliationItems和Products。

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

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

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

ReconciliationItems表基本布局

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

ID = ID在reconciliationItems表。

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

reconciliation_id =涉及对账表中的ID

我的问题是:

我不能直接抢“PRODUCT_ID”我的控制器的内部时,我访问了“资源库ReconciliationItems”。

这里是我的代码:

$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。请教育我:)

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

+0

如果您删除该回声....错误消失了? – Hackerman

+0

但是我需要在我的控制器里面运行更多的脚本之前看看ID是什么。 – LargeTuna

+0

$ checkReconciliationRecords-> getProduct() - > getId()发现它! :) – LargeTuna

回答

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

想通了! :)

2

这称为延迟加载,这意味着每次查询reconciliationitem模型时,symfony会自动关注两个代理对象的一个​​产品和一个对帐。

您尝试访问该对象的symfony默默excutes多了一个查询和retrive用相同的ID产品coresponing模型,以访问ID,你应该做的休耕第一次:

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

你可以了解更多:http://symfony.com/doc/current/book/doctrine.html

相关问题