使用Corcel,在Docker容器之間从Laravel连接到WordPress的数据库

特定于corcel的预先设置

我会参考以下内容并继续进行下去。
因为是师走,所以有点忙。

首先安装corcel

composer require jgrossi/corcel

Laravel版本低于5.4的情况下,请写下如下内容。

'providers' => [
    /*
     * Package Service Providers...
     */
    Corcel\Laravel\CorcelServiceProvider::class,
]
php artisan vendor:publish --provider="Corcel\Laravel\CorcelServiceProvider"

在数据库中添加WordPress的连接设置。

    'wordpress' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'mydatabase',
        'username'  => 'admin',
        'password'  => 'secret',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'wp_',
        'strict'    => false,
        'engine'    => null,
    ],

将连接更改为“WordPress”。

<?php

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

创建WpPost模型。

php artisan make:model WpPost
<?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文件末尾中添加以下内容。

networks:
  default:
    external:
      name: new_network
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端的数据库设置。

在Docker容器中登录到wordpress-mysql,并确认地址。

hostname -i
192.168.1.2

请根据WordPress的wp-config.php文件中的设置,逐步修改Laravel的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的数据库。

登录到Laravel的Docker容器,连接到WordPress的数据库。

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: [],
     },
   }

一切顺利地连接成功了!! de le!!)

广告
将在 10 秒后关闭
bannerAds