有2种不同的API有2个不同的数据库,但目录类似的对象(音乐艺术家)。他们提供不同类型的信息,我想将它们集成到我们网站的一个个人资料页面中。
然而,问题是找到属于两个API的单个艺术家的主键。这样做的最佳做法是什么?我有几种方法:
返回的视图将提供与搜索字词相比的潜在艺术家资料的链接。如果特定艺术家在两个API上都有返回的信息,那么他们的URL将如下所示:
website.com/artist/profile/{API1-primary-ID}/{API2-primary-ID}
然后,此路线将根据各自的ID提取每位艺术家的详细信息。
但是,如果从第一个阵列到第二个阵列没有匹配,则此Artist Profile链接的URL将如下所示:
website.com/artist/profile/{API1-primary-ID}/0
在控制器中,如果第二个参数为0,则会显示相应的视图,仅显示第一个API的信息。
当我说我有不同的方法解决这个问题时,我有点撒了谎。输入所有这些后,这是我的情况最好的一个。我想我现在的问题是,PHP或Laravel中是否已有一个模块可以比较匹配的数组或字符串?答案 0 :(得分:1)
Laraval有ton of helpers用数组做很多事情。如果您可以将两个结果集作为Eloquent Collections,则可以使用许多非常方便的方法来比较intersect()
等集合。您可以查看收集功能here的完整列表。
作为一个快速提示,如果你的结果是一个关联数组,你可以通过这样做把它们变成一个Eloquent Collection:
$myArray = array('artist' => 'Garth Brooks', 'category' => 'Country');
$myCollection = Collection::make($myArray);
如果它们是JSON并且您json_decode()
将其转换为对象,则可以使用get_object_vars()将其转换为关联数组并将其提供给Collection::make()
方法。
希望能为您提供有关如何处理数据的一些想法。