corcelを使ってdockerコンテナ間でlaravelからwordpressのDBに接続する

##corcelの事前設定

下記を参考に進めていきます。
かなり巻いてます（師走だからね）。

https://github.com/corcel/corcel

まずはcorcelをインストール

```
composer require jgrossi/corcel
```

laravelのバージョンが5.4以下は下記を記載

```config/app.php
'providers' => [
    /*
     * Package Service Providers...
     */
    Corcel\Laravel\CorcelServiceProvider::class,
]
```

```
php artisan vendor:publish --provider="Corcel\Laravel\CorcelServiceProvider"
```

databaseにwordpressの接続設定を記載。

```config/database.php
    'wordpress' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'mydatabase',
        'username'  => 'admin',
        'password'  => 'secret',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'wp_',
        'strict'    => false,
        'engine'    => null,
    ],
```
コネクションを'wordpress'へ変更

```config/corcel.php
<?php

return [
(省略)
    'connection' => 'wordpress',
(省略)
];
```

WpPostモデルを作成します。

```
php artisan make:model WpPost
```

```WpPost.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Corcel\Model\Post as Corcel;

class WpPost extends Corcel{
   protected $connection = 'wordpress';
}
```

##wordpressとlaravelのdockerの設定

事前に作成済みのwordpressのdocker-compose.ymlファイルの末尾に下記を記述

```wordpress側docker-compose.yml
networks:
  default:
    external:
      name: new_network
```

```laravel側docker-compose.yml
networks:
  default:
    external:
      name: new_network
```

createコマンドでnew_networkを作ります。

```
docker network create new_network
```

docker networkコマンドで確認します。

```
docker network ls
xxxxxxxxxx        my_network    bridge              local
```

dockerコンテナを立ち上げます。

```
docker-compose up
```

##laravel側のdatabase設定を修正

dockerコンテナ内のwordpress-mysqlにログインし、アドレスを確認します。

```
hostname -i
192.168.1.2
```

laravelのdatabase.phpの設定内容を変更します。
それぞれwordpressのwp-config.phpの設定を元に書き換えていってください。


```config/database.php
    'wordpress' => [
        'driver'    => 'mysql',
        'host'      => 192.168.1.2,
        'database'  => 'mydatabase',
        'username'  => 'wordress_root',
        'password'  => 'wordpress_password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'wp_',
        'strict'    => false,
        'engine'    => null,
    ],
```

##wordpressのDBに接続
laravelのdockerコンテナにログインし、wordpressのDBに接続します。

```
php artisan tinker
>>> App\WpPost::find(1)
=> App\WpPost {#5963
     ID: 1,
     post_author: 1,
     post_date: "2017-10-20 12:06:00",
     post_date_gmt: "2017-10-20 03:06:00",
     post_content: "WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください !",
     post_title: "Hello world!",
     post_excerpt: "",
     post_status: "publish",
     comment_status: "open",
     ping_status: "open",
     post_password: "",
     post_name: "hello-world",
     to_ping: "",
     pinged: "",
     post_modified: "2017-10-20 12:06:00",
     post_modified_gmt: "2017-10-20 03:06:00",
     post_content_filtered: "",
     post_parent: 0,
     guid: "http://localhost:8888/?p=1",
     menu_order: 0,
     post_type: "post",
     post_mime_type: "",
     comment_count: 1,
     meta: Corcel\Model\Collection\MetaCollection {#5964
       all: [],
     },
   }
```

無事接続できました！！