相信很多PHP项目不是基于laravel框架来写的,但写过laravel应用的PHPer会比较喜爱laravel的ORM,也因为最近要写一个PHP脚本(非laravel应用)需要用到数据库的相关操作,so,在脚本中使用Eloquent,这样比直接写PDO爽多了。再说个题外话,PHP很适合写服务器脚本,脚本就是力求简单、快速、轻量,所以直接在PDO也是不错的,我是经常用PDO来写脚本的数据库操作,无需载入其他文件。
Laravel的Eloquent是一个很棒的ORM,下面就开始详细介绍如何在自己的项目集成Eloquent吧!
安装
项目需要composer,需要提前安装,这里不细说了,使用下面命令来安装Eloquent
composer require illuminate/database
也可以去 https://packagist.org/packages/illuminate/database
查看官方提供的相关说明与详细的环境要求
配置
db.php
<?php
// 载入composer的autoload文件
include __DIR__ . '/vendor/autoload.php';
$database = [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'demo',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
];
use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;//如果你不喜欢这个名称,as DB;就好
$capsule = new Capsule;
// 创建链接
$capsule->addConnection($database);
// 设置全局静态可访问
$capsule->setAsGlobal();
// 启动Eloquent
$capsule->bootEloquent();
现在只要你需要使用到Eloquent的地方载入这个文件即可, 下面我们来简单介绍一下使用。
建表
create-table.php
<?php
//包含Eloquent的初始化文件
include __DIR__ . '/db.php';
use Illuminate\Database\Capsule\Manager as Capsule;
Capsule::schema()->create('users', function($table)
{
$table->increments('id');
$table->string('username', 40);
$table->string('email')->unique();
$table->timestamps();
});
执行命令
php create-table.php
写入数据
insert.php
<?php
//包含Eloquent的初始化文件
include __DIR__ . '/db.php';
use Illuminate\Database\Capsule\Manager as Capsule;
Capsule::table('users')->insert(array(
array('username' => 'Helloworld', 'email' => '[email protected]'),
array('username' => 'shennanluban', 'email' => '[email protected]'),
array('username' => 'xiaoxuesheng', 'email' => '[email protected]'),
));
执行命令
php insert.php
使用MVC的模型
只要你的模型继承Eloquent的Model类,就可以了
use Illuminate\Database\Eloquent\Model as Eloquent;
class User extends Eloquent
{
protected $table = 'users';
}
你就可以很方便的像在Laravel框架里一样使用Eloquent了
// 查询id为2的
$users = User::find(2);
// 查询全部
$users = User::all();
// 创建数据
$user = new User;
$user->username = 'someone';
$user->email = '[email protected]';
$user->save();
// ... 更多
关于Eloquent有很多用法,有兴趣的就去查阅相关文档吧
https://docs.golaravel.com/docs/4.1/eloquent
https://learnku.com/docs/laravel/5.8/eloquent/3931