2015-08-08 73 views
1

我正在爲API使用Laravel後端的iphone應用程序。在某些時候,將會有Goole Places集成(或類似的服務)。Laravel - 第三方API的模型?

在我的應用程序中,我需要存儲用戶和地點之間的關係,這是多對多關係。然而,因爲「地點」不是由Eloquent模型(而是由Google的API)表示的,我該如何創建這種關係?我是否需要爲Google Places API創建包裝?

回答

1

這是我該怎麼做的。

您所有的型號都從基地Eloquent ORM model class延伸,這意味着您可以在擴展課程中覆蓋查找器/獲取器/設置器等。

您的Google Place模型是一種特殊情況,它不依賴於數據庫,而是依賴於Google Places API。

因此,您需要覆蓋Google Places模型的基本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? 
    } 
} 

上。然後,你只需要用戶在使用谷歌的地方ID數據透視表的地方聯繫起來。

0

我認爲爲第三方製作模型並不相關,因爲它不是服務和使用API​​的雄辯角色。 否則我建議你做一個服務:

  • 創建一個文件夾的應用程序/服務
  • 內有良好的命名空間
  • 創建自己的函數創建一個類。您可以創建一個配置文件並將其與Env變量一起用於存儲憑據
  • 最後,在您的控制器中調用您的服務,然後在函數的輸入中聲明它,並且laravel將自動解析它。

public function test(MyService $service)