嘿!我只想知道你們在zend框架中使用連接表的意見。Zend Framework關係與表選擇
當然,你可以通過定義referenceMap和dependentTables之類的東西,或者使用
setIntegrityCheck(false)
一個數據庫內
選擇使用關係()。 setIntegrityCheck版本對我來說似乎有點骯髒,但其他版本並不適合大查詢和加入許多表格...
我是PHP開發人員,現在已經5年了,並且是新的zend框架,只想爲我的第一個項目找個方向。
謝謝!
嘿!我只想知道你們在zend框架中使用連接表的意見。Zend Framework關係與表選擇
當然,你可以通過定義referenceMap和dependentTables之類的東西,或者使用
setIntegrityCheck(false)
一個數據庫內
選擇使用關係()。 setIntegrityCheck版本對我來說似乎有點骯髒,但其他版本並不適合大查詢和加入許多表格...
我是PHP開發人員,現在已經5年了,並且是新的zend框架,只想爲我的第一個項目找個方向。
謝謝!
我個人使用它們到處都是。我通常會做的就是建立一個參考地圖,然後用getX()定義模型,調用該關係。
class Model_Content extends Zend_Db_Table_Row_Abstract
{
public function getComments($showInactive = false)
{
$select = $this->_table->select();
if (!$showInactive) {
$select->where('comment_active = \'y\'');
}
return $this->findDependentRowset('Model_DbTable_Comment', null, $select);
}
}
好的方法......至於我可以看到,在ZF只有選擇()的事情得到一個行集,其中包括由2個或多個表中的數據,對不對?例如,我可以有一個用戶,這個用戶有一個圖像和一個帳戶。兩者都在單獨的表格中。
當我使用findDependentRowset,有沒有辦法得到這樣的結果:
用戶名=>湯姆
的ImagePath => /images/tom.jpg
ACCOUNTTYPE =>免費
在一個對象內,對嗎?或者我錯過了什麼?謝謝你的幫助!!
就我個人而言,我使用setIntegrityCheck(false)無處不在。是的,它有點髒,但它是KISS,並且更容易編寫這樣的複雜連接查詢。
我也使用setIntegrityCheck(false),因爲像Richard已經說過的那樣,它是KISS,它是構建大型查詢的唯一選項。使用select()的另一個好處是,你可以將它回顯出來。
這樣你可以檢查你的工作,當你使用一個referenceMap這是不是太多容易...
的findDependentRowset/findParentRow方法都是公平和良好的,除非你正在執行查詢拉動大量的數據。根據以往的經驗,使用這些方法調用另一個數據庫查詢,即使它之前已經執行過,並且我已經在Web和數據庫服務器之間記錄了很多數據流量。在這種特殊情況下,應用程序需要轉換爲使用連接方法。
然而,findDependentRowset和findParentRow方法都有自己的優勢,讓你再從你的連接表回顧一下新一個Zend_Db_Table_Row對象相同的方法。
rtmilker:本findDependentRowset應該在這種情況下返回Zend_Db_Table_Rows數組這樣:
foreach($myTableAdapter->findDependentRowset('New_Table_Class', 'rule/[null]', $select) as $dependentRowObject){
Zend_Debug::dump($dependentRowObject->toArray());
}
的findParentRow方法顯然不需要foreach語句;與fetchRow()/ fetchAll()方法一樣的東西。