Pix_Array_Merger

Pix_Array

在 Pix Framework 裡面有提供 Pix_Array ,而 Pix_Table_ResultSet 也算是一種 Pix_Array 有的時候會有需求將兩個 Pix_Array 合併並照某個排序列出,此時你就會需要用到 Pix_Array_Merger 了

Pix_Array_Merger 的用法是

出來的 $merged_array 就是合併後的 array

以 PIXNET 自己的服務為例,PIXNET 的資料庫內有儲存 Article (文章) 和 Picture (照片) 如果我想要列出某個使用者最新十筆文章或照片的話,我可以用以下的寫法

另外使用 Pix_Array_Merger 來存取 Pix_Table_ResultSet 有一個好處,就是 Pix_Array_Merger 不會一次從資料庫 裡面拉一堆資料進來,他會先拉 N 筆,等到資料不夠再繼續去資料庫多拉 N 筆,因此可以避免從資料庫內拉過多資料造成 記憶體被吃完或是傳輸過多資料而效能低落。

如果要指定一次從資料庫拉多少筆,可以用 Pix_Array_Merger->chunkSize($n) 指定。

Pix_Array_Merger 也有提供 ->after() 的 method ,可以讓你指定要取出哪個條件之後的資料 ->after() 允許提供三種參數

1. {object} Row in Array

找出在這個 object 之後的 row,主要在找出「上一筆」、「下一筆」時會很方便

2. {array} 搜尋條件

找出這個條件之後的值,用在搜尋特定條件 Ex: 七天前、size > 1024 ...

3. {string} merged id

Pix_Array_Merger 為每個 array row 加上的 id ,不會重覆,因為是字串可以拿來在網址上傳遞很方便