使用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!!)