如何在 Slim Framework 中使用 Laravel 的 Eloquent ORM

我在 New Media Campaigns 构建了一个小型 Slim Framework 应用。这个应用是供内部使用,我想在构建它的过程中学习一些新知识。即使数据库模式相当简单,我也听说了很多关于 Laravel(由 Taylor Otwell 开发的一个全栈框架)的事,及其许多组件作为单独的 Composer 包可在 Packagist 上找到。

所以我决定在我的 Slim Framework 应用中使用 Laravel 的 Eloquent ORM。有几个读者问我如何执行此操作。所以,开始吧……

文件结构

以下是我组织我的应用的方式。虚拟主机文档根目录是 public/ 目录。

app/
    models/
        Book.php
public/
    index.php
vendor/
composer.json

安装

首先,准备 composer.json 文件,以便它拉取并安装 Slim Framework 和 Eloquent ORM。composer.json 文件应如下所示

{
    "require": {
        "slim/slim": "*",
        "illuminate/database": "*"
    }
}

完成后,运行 composer install 安装应用依赖项。

引导 Eloquent ORM

接下来,我让 Composer 通过加载 Composer 的 autoload.php 文件自动加载应用的依赖项。

// Autoload our dependencies with Composer
require '../vendor/autoload.php';

现在,我引导 Eloquent ORM 并向其传递我的数据库连接信息(确保添加你自己的用户名、密码和数据库名称)。

// Database information
$settings = array(
    'driver' => 'mysql',
    'host' => '127.0.0.1',
    'database' => '',
    'username' => '',
    'password' => '',
    'collation' => 'utf8_general_ci',
    'prefix' => ''
);

// Bootstrap Eloquent ORM
$connFactory = new \Illuminate\Database\Connectors\ConnectionFactory();
$conn = $connFactory->make($settings);
$resolver = new \Illuminate\Database\ConnectionResolver();
$resolver->addConnection('default', $conn);
$resolver->setDefaultConnection('default');
\Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver);

Eloquent ORM 现已引导,我可以创建和使用扩展 Eloquent 抽象模型的模型。此示例假定你的数据库包含一个名为 books 的表,该表具有 title 和 author 列。

class Book extends \Illuminate\Database\Eloquent\Model
{

}

将此模型文件包含在 index.php 中,并在你的 Slim 应用路由中使用你的 Eloquent ORM 模型

// Create Slim app
$app = new \Slim\Slim();

$app->get('/foo', function () {
    // Fetch all books
    $books = \Book::all();
    echo $books->toJson();

    // Or create a new book
    $book = new \Book(array(
        'title' => 'Sahara',
        'author' => 'Clive Cussler'
    ));
    $book->save();
    echo $book->toJson();
});

$app->run();

如果你想阅读一篇关于 Slim Framework 和 Eloquent ORM 的更深入的教程,请阅读 使用 Composer 混合和匹配 PHP 组件,作者为 Phil Sturgeon

快乐编程!