1

私はまだsymfonyを学んでいるので、この問題について何か助けていただければ幸いです!

Reconciliation、ReconciliationItems、および Products の 3 つのテーブルがあります。

Reconciliation には、すべての調整レポートが保存されます。

ReconciliationItems には、レポートに含まれるすべてのアイテムが格納されます。

Products には、ReconciliationItems のすべての製品情報が格納されます。

ReconciliationItems テーブルの基本レイアウト

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

id = reconciliationItems テーブルの id。

product_id = products テーブルの ID に関連します。この列は、データをデータベースに永続化するときに、多対 1 の関係を使用して ID を取得します。

reconciliation_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

これは遅延読み込みと呼ばれます。つまり、reconciliationitem モデルをクエリするたびに、symfony は 1 つの製品と 1 つの調整の 2 つのプロキシ オブジェクトを自動的に処理します。

このオブジェクトに初めてアクセスしようとすると、symfony はもう 1 つのクエリを黙っ​​て実行し、product と同じ 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 に答える