我正在使用一个使用Laravel后端进行API的iphone应用程序。在某些时候,将会Goole Places集成(或类似的服务)。
在我的应用程序中,我需要存储用户和位置之间的关系,这是多对多关系。但是因为' Places'不是由Eloquent模型代表(但是由谷歌的API),我如何创建这种关系?我是否需要为Google Places API创建包装器?
答案 0 :(得分:1)
我会这样做。
所有模型都从基础Eloquent ORM model class扩展,这意味着可以覆盖扩展类中的finders / getters / setter等。
您的Google Place模式是一个特殊情况,它不依赖于数据库,而是依赖于Google Places API。
因此,您需要覆盖Google地方信息模型的基本Eloquent模型方法。
例如:
class GooglePlace extends Eloquent{
/**
* Find a model by its primary key or return new static.
*
* @param mixed $id
* @param array $columns
* @return \Illuminate\Support\Collection|static
*/
public static function findOrNew($id, $columns = ['*'])
{
# we do not need Eloquent's database based implementation
# api code to get Google Place using $id
# perhaps use $columns to get only specific fields about the place
# from the API?
}
}
然后,您只需使用Google商家信息ID将用户与数据透视表中的地点相关联。
答案 1 :(得分:0)
我认为为第三方制作模型并不重要,因为它不是雄辩的服务和使用API的角色。 否则我建议你提供服务:
public function test(MyService $service)
答案 2 :(得分:0)
在API和Eloquent Model透明性之间提供提供商复杂的实现。建议您使用https://github.com/CristalTeam/php-api-wrapper。
Range Filter
,您可以为API创建模型,并且拥有专门适应API请求的查询构建器。您可以使用高级Laravel功能(例如路由绑定)以及Eloquent模型与该程序包模型之间的关系。