CodeigniterでLaravelのEloquentを使う

codeigniter php Laravel

CodeigniterでLaravelのEloquentモデルを利用する方法。
ある程度Codeigniterのフレームワーク周り詳しい人向け。

CI側の設定

  1. configのモデルのautoloadはEloquent model継承クラスは呼び出し不可
  2. composerとの連動が必須。
  3. その他は制約特にないはず。

Database周りのセットアップ

下記のREADME通りでOK.
https://github.com/illuminate/database
CIがデフォルトでFacadデザインパターン未対応なので、直接DBコネクション周りを
セットアップする。

以下は実際利用する場合の関数。
CIのベースコントローラで呼び出し、初期化すればよい。

 1function dbSetup(array $db_config)
 2        $capsule = new Capsule;
 3        $capsule->addConnection([
 4            'driver'    => 'mysql',
 5
 6            'read' => [
 7                'host' => $db_config['default']['hostname'],
 8            ],
 9            'write' => [
10                'host' => $db_config['default']['hostname'],
11            ],
12            'database'  => $db_config['default']['database'],
13            'username'  => $db_config['default']['username'],
14            'password'  => $db_config['default']['password'],
15            'charset'   => $db_config['default']['char_set'],
16            'collation' => $db_config['default']['dbcollat'],
17        ]);
18        // Set the event dispatcher used by Ealoquent models... (optional)
19        $capsule->setEventDispatcher(new Dispatcher(new Container));
20        // Make this Capsule instance available globally via static methods... (optional)
21        $capsule->setAsGlobal();
22        $capsule->bootEloquent();
23}

Eloquent model定義

上記でDBセットアップしたら Eloquentモデルクラスとしてどこからでも呼び出せる。
下記ページのメソッドはすべて可能
https://laravel.com/docs/5.5/eloquent

  • Model 定義例
1<?php
2use Illuminate\Database\Eloquent\Model;
3class Transaction extends Model
4{
5    protected $table = 'transactions';
6}