2012-02-26 59 views
1

假設三個表中,下述關聯的數據庫:PHP Activerecord對象數組,下一步是什麼?

//working with three tables a client 'has one' business 
    //and a business has many business hours. 

下面將給我們一個陣列的ActiveRecord的對象

$this->client->business->businesshours 

,我們將不得不拉一個對象形成陣列以獲得其列值:

$this->client->business->businesshours[0]->start_time 

由於我是PHP Activerecord的新手,除了使用foreach()循環循環外,還有哪些方法可以從一組對象中抽取/排序/使用信息?是否有方法通過對象數組排序,根據列值提取信息,以及任何最佳實踐?

回答

2

沒有特定於圖書館的練習來排列或從結果數組中抽取某些businesshour對象。如果要操縱返回的對象數組,則需要在結果數組上使用標準的PHP數組函數,如array_map

如果您知道結果數組中返回對象的排序順序或條件,則應該在關聯聲明中指定這些順序或條件,以便不返回不需要或不需要的對象。

既然你還沒有發佈任何代碼,你就只好推斷從這個例子你自己的情況:

static $has_many = array(
    array(
    'businesshours', 
    'conditions' => array('hour BETWEEN ? AND ?' => array(9, 17)), 
    'order' => 'hour ASC' 
) 
); 

該協會聲明將9和17之間只返回businesshour對象和做按升序排列。正如你所看到的,如果你將你的關聯約束爲只有你需要的記錄,那麼一旦收到結果數組就不需要排序或解析。

// get $result array 
$new = array_map(function($obj) { if ($obj->hour > 9){ return $obj; } }, $result); 

有時使用array_map從您的結果數組只得到特定的對象是非常有用

相關問題