2014-02-10 18 views
2

有兩種不同的API具有2個不同的數據庫,但目錄類似的對象(音樂藝術家)。他們提供不同類型的信息,我想將它們都集成到我們網站上的一個配置文件頁面中。如何在一個搜索/結果函數中集成多個API

但是,問題是要找到屬於這兩個API的單個藝術家的主鍵。最佳做法是什麼?我有幾種方法:

  1. 基於相關性 用戶提交搜索項。搜索在兩個API上完成,並返回每個結果集合。一個集合與另一個集合進行比較,如果有匹配,則將它們添加到新陣列中。

返回的視圖將提供潛在藝術家個人資料與搜索詞相比的鏈接。如果一個特定的藝術家,對雙方的API返回的信息,那麼他們的URL會是這個樣子:

website.com/artist/profile/{API1-primary-ID}/{API2-primary-ID} 

那麼這條路線將拉動上根據各自的ID每個藝術家的詳細信息。

但是,如果世界上沒有從第一陣列到第二節比賽那麼對於這位藝術家個人資料鏈接的URL會是這個樣子:

website.com/artist/profile/{API1-primary-ID}/0 

在控制器中,然後如果第二個參數爲0,那麼將顯示適當的視圖,僅顯示來自第一個API的信息。

當我說我有不同的方法來解決這個問題時,我有點撒謊。輸入完所有內容後,這對我的情況來說是最好的。我想現在我的問題是,PHP或Laravel中是否已經有一個模塊可以比較匹配的數組或字符串?

+1

相關性標準是什麼? – 735Tesla

+0

藝術家的名字,大寫或小寫不嚴格 –

回答

1

Laraval有一個ton of helpers用於數組做很多事情。如果您可以將兩個結果集作爲Eloquent Collections進行比較,則可以使用很多非常方便的方法來比較集合,例如intersect()。您可以看到收集功能here的完整列表。

作爲一個快速提示,如果你的結果是一個關聯數組,你可以這樣做,使他們成爲一個雄辯的收藏:

$myArray = array('artist' => 'Garth Brooks', 'category' => 'Country'); 
$myCollection = Collection::make($myArray); 

如果他們是JSON和你做一個json_decode()其轉換成對象,然後可以使用get_object_vars()將其轉換爲關聯數組並將其輸入到Collection::make()方法中。

希望能給你一些關於如何處理數據的想法。

相關問題