- Ruby / Rails以外の開発一般
READ MORE
BPSの福岡拠点として一緒にお仕事させて頂いてます、株式会社ウイングドアの坂本です。
前回はLaradockの話を書かせて頂いたのでLaravelネタを続けてみます。
とはいえってもブログのネタにできるほどLaravelは最近触れておらず、
今回は過去にLaravel5.2でAccessへの接続した時の話をしたいと思います。
ある案件で既存システムとの兼ね合いでどうしてもMicrosoft Access(mdbファイル)への参照と更新が必要になりました。
Laravelから直接DBを更新するのどうなのだろうか…と思いつつ既に複数のDBや言語、ツールが絡んでいてこれ以上増やしたくない状態。
他に最適な方法があるかもしれないと思いつもLaravelからごにょごにょすることに。
しかしながら検索してみても当時LaravelからAccessの接続のライブラリが見つからない!!
ということで既存のライブラリを参考に実装してみました。
ちなみにその時の環境は以下の通り
余談ですがこの時の開発環境はNetBeansです。(未だにPHPのIDEは迷ってます)
今回は予めODBCでmdbファイルの登録をしておき、ODBC経由でLaravelからアクセスする、という方法を取りました。
あくまで補助機能であったのでコストはかけたくない、ということでライブラリの実装については以下のように方針を決定。
(使うところだけ正しく動けばいい)
コストと勢い優先です。
mdb
の設定これでmysqlなどと同じようにモデル経由で参照/更新ができるようにしました。
追加ファイルしたファイルとその概要は以下の通り
Illuminate\Database\Query\Grammars\Grammar
こんな感じで使う語句の指定やmdbファイル用に調整が必要なものを修正しました。
Illuminate\Database\Query\Processors\Processor
Illuminate\Database\Query\Builder
以下はほとんどMysqlなどのライブラリそのままです。
上記のクラスを利用するよう設定仕様とすると、かなり多くのファイルを用意することになりました。
Illuminate\Database\Connection
mdp
の場合にConnection 、MdbConnectorを呼び出すように修正
Illuminate\Database\Connectors\ConnectionFactory
Illuminate\Database\DatabaseManager
Illuminate\Database\Connectors\ConnectionFactory
Illuminate\Database\Connectors\ConnectorInterface
Illuminate\Support\ServiceProvider
Illuminate\Database\Eloquent\Model
調査してみると案外既存の構文などそのまま利用できそうで、簡単な参照、更新のみでしたら少しの調整で済むのですが、
そのクラスを利用するために複数もファイルを作成しなければならず、そこに行き着くまでが長かった。
しかしながら一度設定するとあとはほとんどDB意識せずに更新や参照ができたので楽でした。
なにより既存のフレームワークの処理を追ってい実装していくのが楽しい!
そういう経緯などを経て思い入れの深い案件になりました。
株式会社ウイングドアでは、Ruby on RailsやPHPを活用したwebサービス、webサイト制作を中心に、
スマホアプリや業務系システムなど様々なシステム開発を承っています。