なにこれ
- EloquentSalesForce(EISF) という Laravelで Salesforceを扱うためのパッケージの紹介です。
- "laravel salesforce"で検索すると
omniphx/forrest
というパッケージをよく目にしますが、こちらは、SOQLでアクセスするので少し面倒です。 - 今回紹介する EloquentSalesForce(EISF) というパッケージは、 Salesforceの知識がなくても、Salesforceのデータ構造体をEloquentとして扱え敷居が低いです。
EloquentSalesForce(EISF)
- 普段Larvelのコードを書いていれば、以下の公式ドキュメントにざっくり目を通すだけでだいたい理解できるでしょう。
- https://roblesterjr04.github.io/EloquentSalesForce/index.html#/?id=eloquent-sales-force
インストール
- SalesForce APIの設定方法は割愛いたします。
- composer で eloquent-sales-force をインストール
composer require rob-lester-jr04/eloquent-sales-force
- DB ドライバ-を追加し、対応する環境変数を .env ファイルで定義しましょう。
config/database.php
'soql' => [
'driver' => 'soql',
'database' => null,
'consumerKey' => env('SF_CONSUMER_KEY'),
'consumerSecret' => env('SF_CONSUMER_SECRET'),
'loginURL' => env('SF_LOGIN_URL'),
// Only required for UserPassword authentication:
'username' => env('SF_USERNAME'),
// Security token might need to be ammended to password unless IP Address is whitelisted
'password' => env('SF_PASSWORD')
],
利用方法
- Lead という オブジェクトにアクセスするためにモデルを定義します。
app/Models/Lead.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Lead extends Model
{
//
}
- ここまでくれば、あとは簡単です。
- いつものEloquent のように扱えます。
参照
exmaple_read.php
$leads = Lead::where('Email', 'user@test.com')->get();
$lead = Lead::find('00Q1J00000cQ08eUAC');
$email = $lead->Email;
作成
exmaple_create.php
$lead = Lead::create([
'FirstName' => 'Foo',
'LastName' => 'Bar',
'Company' => 'Test Company'
]);
その他できること
- update/delete
- Salesforceオブジェクト同士のリレーション の定義
- Local Sync (DBと同期が取れそう)
- 詳しくは公式ページを参照
まとめ
- Salesforceを一度も触ったことがなかったのですが、このパッケージのおかげで少ない学習コストで、サービス側のDBの内容を、Salesforceを 同期することができました。
- Salesforce連携の開発は、Salesforceの Sandbox機能を使って 本番データに影響を与えずにテストすることができました。