HerokuConnectを使ったCakePHP3とSalesforceの連携


前提:CakePHP3でプロジェクトを作成してbakeしておいてください。


bakeで生成された下記のファイルをそれぞれHerokuConnectから生成されたスキーマに合わせるように変更します。


config->app.php

app.php

//postgresに変更
'driver' => 'Cake\Database\Driver\Postgres',

//HerokuPostgresの接続情報に変更
'host' => 'host',
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
//下記を追加
'schema' => 'public',

Model->Table->~Table.php

hogesTable.php


public function initialize(array $config)
 {
    //接続先を変更
    $this->setTable('salesforce.hoge__c');
 }

Model->Entity->~.php

Hoge.php

class Hoge__c extends Entity
{
    protected $_accessible = [
        //下記をスキーマの仕様に合うように変更
        'hoge' => true,
        'fuga' => true,
    ];
}


これでCakephp3->Salesforceの接続は完了です。

後はControllerやTemplate、各種バリデーションをCakephp3の仕様に沿って設定すれば、DBの中身を確認したり追加したりすることが出来るようになります。

Salesforce->HerokuConnectにつきましては別記事に書いてあるのでそちらをご確認ください。


注意点として、app.php->Datasourcesの箇所でHerokuConnectで接続されているスキーマを直接指定すると"function get_xmlbinary() does not exist"エラーを吐かれてしまうので、app.php内では必ず”schema”を”public”に指定した上でTableから”schema.table”の形式で指定するようにしましょう。

Heroku Connectの "function get_xmlbinary()does not exist"エラーを解決するにはどうすればいいですか?(※参考リンク)

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
Cake屋さん。