如何在 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。
快乐编程!