簡體   English   中英

在Zend Framework中處理聯接的最佳方法?

[英]Best approach dealing with joins in Zend Framework?

好吧,它更像是一個設計問題。 我知道在Zend框架中使用聯接的兩種方法

  1. 使用Zend表的實例處理它(其Select obj)
  2. 使用Zend Db實例(其Select obj)處理它

在第一種方法中,我覺得真的很奇怪-某些表也必須與其他表打交道,這不是很好,很混亂,至少在我讀取方法名稱getData()時-我假設它處理數據它自己的。

第二個比較好,您可以擁有一個充當服務的類-NodeService,它將處理表node和node_translation,但也引起了一個問題,為什么在這種情況下我們需要Zend Table。 我希望我能解釋自己足夠的感謝。

從技術上講,您指的是Zend_Db_SelectZend_Db_Table_Select Zend_DbZend_Db_Table不允許連接。

Zend_Db_Table一章中有關Select APIZF手冊中

Zend_Db_Table_Select對象是Zend_Db_Select對象的擴展,該擴展將特定限制應用於查詢。 增強和限制包括:

  • 您可以選擇返回fetchRow或fetchAll查詢中的列的子集。 在不希望為所有列返回大量結果的情況下,這可以提供優化的好處。
  • 您可以指定用於選擇表中表達式的列。 但是,這將意味着返回的行或行集將被只讀,並且不能用於save()操作。 如果嘗試執行save()操作,則具有readOnly狀態的Zend_Db_Table_Row將引發異常。
  • 您可以在select上允許JOIN子句以允許多表查找。
  • 您無法指定要在行/行集中返回的JOINed表中的列。 這樣做將觸發PHP錯誤。 這樣做是為了確保保留Zend_Db_Table的完整性。 即Zend_Db_Table_Row應該僅引用從其父表派生的列。

主要區別在於Zend_Db_TableZend_Db_Table_Select充當表數據網關 ,它可以直接訪問表及其行,並可以調用方法來填充表,而Zend_Db_Select則不是,並且是獨立的。

暫無
暫無

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

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