2015-08-08 4 views
1

Я работаю над приложением iphone, которое использует брандмауэр Laravel для API. В какой-то момент будет интеграция Goole Places (или аналогичная услуга).Laravel - модель для стороннего API?

В моем приложении мне нужно будет хранить отношения между пользователями и местами, что много-ко-многим. Однако, поскольку «Места» не представлены моделью «Яркость» (но API-интерфейсом Google), как мне создать это отношение? Нужно ли создавать оболочку для API Google Адресов?

ответ

1

Вот как я это сделаю.

Все ваши модели простираются от основания Eloquent ORM model class, что означает, что вы можете переписать искатели/геттеры/сеттеры и т. Д. В ваш расширенный класс.

Ваша модель Google Place - это особый случай, который не зависит от базы данных, а от API Google Адресов.

Следовательно, вам потребуется перезаписать базовые методы модели Eloquent для модели Google Адресов.

Например:

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 Place ID.

0

Я думаю, что сделать модель для третьей стороны не имеет значения, потому что это не роль красноречивого, чтобы служить и потреблять API. В противном случае я предлагаю вам сделать услугу:

  • Создать приложение папку/Услуги
  • Создать класс внутри с хорошим пространством имен
  • создавать свои собственные функции. вы можете создать файл конфигурации и использовать его с переменными Env для хранения учетных данных.
  • Наконец, позвоните в сервисный центр, прежде чем объявлять его на входе функции, и laravel автоматически разрешит его.

public function test(MyService $service)

Смежные вопросы