簡體   English   中英

Symfony2刪除記錄實體問題

[英]Symfony2 Delete Record Entity Issue

我要從表中刪除記錄時遇到Symfony2的問題。

我有一個存儲以下內容的表:purchaseOrders,purchaseOrderItems和倉庫

采購訂單實體“ purchaseOrders”

 id|name   |
 -----------
 1 |Test   |

倉庫實體“倉庫”

 id|name             |
 ---------------------
 1 |Test Warehouse   |
 2 |Test Warehouse 2 |

采購訂單表項目實體“ purchaseOrderItems”

 id|name        |purchaseOrder_id|warehouse_id
 --------------------------------
 1 |Test Item 1 |1               |1
 2 |Test Item 2 |1               |1
 3 |Test Item 3 |1               |2

purchaseOrder_id是鏈接到名為“ purchaseOrders”的表的多對一關系。 Warehouse_id是鏈接到稱為“倉庫”的表的多對一關系。

我的view.html.twig頁面有點像這樣布局:

 PurchaseOrder
 --------------------------------------
 | | Item         | Warehouse
 --------------------------------------
 |1| Test Item 1  | Test Warehouse
 |2| Test Item 2  | Test Warehouse
 |3| Test Item 3  | Test Warehouse 2

如果我從“倉庫”表中刪除記錄#1,則會在此view.html.twig模板中收到錯誤消息

  An exception has been thrown during the rendering of a template ("Entity was not found.") in /Applications/XAMPP/xamppfiles/htdocs/symfonydev/src/WIC/PurchaseOrderBundle/Resources/views/PurchaseOrder/view.html.twig at line 320.

問題是因為當樹枝模板嘗試訪問倉庫“名稱”時,無法在對象中找到它來呈現它。

我已經嘗試了以下條件語句,但沒有任何效果,我仍然遇到相同的錯誤:

 {% if purchaseOrderItems.warehouses.name != null %}
      {{ purchaseOrderItems.warehouses.name }}
 {% endif %}

 {% if purchaseOrderItems.warehouses.name is defined %}
      {{ purchaseOrderItems.warehouses.name }}
 {% endif %}

 {% if purchaseOrderItems.warehouses.name is not null %}
      {{ purchaseOrderItems.warehouses.name }}
 {% endif %}

我需要知道的是:

當我刪除“倉庫”時,我該如何做,以使與“倉庫”的“ purchaseOrderItems”關系不會中斷或將Null或0放入值中。

問題必須是因為記錄已被刪除,所以purchaseOrderItems無法建立到倉庫的映射。

請幫助或建議我需要做些什么來防止這種情況的發生。

非常感謝!

第一個錯誤,樹枝錯誤,應該這樣寫

{% if purchaseOrderItems.warehouses %}
  {{ purchaseOrderItems.warehouses.name }}
{% endif %}

然后你的問題:

我沒有一種學說可以自動做到的方式。

因此,當您刪除一個倉庫時,只需將PurchaseOrder中的倉庫設置為null。 畢竟,這是一個壞主意,您會弄亂數據。

與其嘗試在Twig中訪問Warehouses.name,不如嘗試使用leftJoin創建一個QueryBuilder:

$q = $repository->createQueryBuilder('p', 'w')->leftJoin('p.warehouse', 'w');
$columns = array('p.id', 'p.name', 'w.name as warehouse');
$products = $q->select($columns)->getQuery()->getResult();

然后,您應該如預期的那樣獲得NULL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM