在Laravel外独立使用Eloquent

小天天天天    PHP    999+ 次    2023-06-30 17:03:17


不得不承认Laravel的Eloquent是一个很棒的ORM,我们也可以在自己的项目里通过composer来使用Eloquent,本文就详细讲解如何在自己的项目集成Eloquent。

安装

我们这里建议一个项目demo, 然后我们在demo目录下执行:

composer require illuminate/database:~4.2

那么你应该会看到:

Using version ~4.2 for illuminate/database
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing nesbot/carbon (1.13.0)
    Loading from cache

  - Installing illuminate/support (v4.2.9)
    Downloading: 100%
    Downloading: 100%
    Downloading: 100%

    Failed, trying the next URL
    Downloading: 100%

  - Installing illuminate/container (v4.2.9)
    Downloading: 100%

  - Installing illuminate/events (v4.2.9)
    Downloading: 100%

  - Installing illuminate/database (v4.2.9)
    Downloading: 100%

Writing lock file
Generating autoload files

这样就表示Eloquent已经安装好了。

配置

下面我们来配置Eloquent。

  1. 首先我们创建一个入口文件,如果你的项目已经有内容,那么同理在你的项目入口文件加入即可:

demo/start.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'    => '',
];

上面我们的数据库配置,库名demo,用户名root,密码为空,这个demo是我在mysql里建立好的空数据库。

然后我们加入Eloquent初始化代码:

use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

// 创建链接
$capsule->addConnection($database);

// 设置全局静态可访问
$capsule->setAsGlobal();

// 启动Eloquent
$capsule->bootEloquent();

那么Eloquent就配置完成了。

最终的文件demo/start.php应该是这样:

demo/start.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的地方载入这个文件即可, 下面我们来简单介绍一下使用。

建表

配置完成了,我们再来使用Eloquent的结构生成器创建数据库的表:

demo/table.php

<?php

//包含Eloquent的初始化文件
include __DIR__ . '/start.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();
});

然后我们运行table.php,两种方式:浏览器打开,或者命令行运行:

php table.php

然后我们的查看MySQL数据库domo里就会有一个users表了:

写入数据

表建立好了,然后我们插入数据,我们同样创建一个文件 demo/insert.php来做实验:

<?php

//包含Eloquent的初始化文件
include __DIR__ . '/start.php';

use Illuminate\Database\Capsule\Manager as Capsule;

Capsule::table('users')->insert(array(
        array('username' => 'Hello',  'email' => 'hello@world.com'),
        array('username' => 'Carlos',  'email' => 'anzhengchao@gmail.com'),
        array('username' => 'Overtrue',  'email' => 'i@overtrue.me'),
    ));


我们写入了3条数据。

使用模型

只要你的模型继承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 = 'some@overtrue.me';
$user->save();

// ... 更多

OK,这基本上就搞定了


如果你觉得本篇文章对您有帮助,请打赏作者

上一篇: Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换

下一篇: Python中的main方法教程

最新评论

暂无评论

热门文章

最新评论

网站数据

网站文章数:481

今日UV/PV/IP:12/13/12

昨日UV/PV/IP:22/28 /22

TOP