如何將 Laravel 的 Eloquent ORM 與 Slim Framework 搭配使用
我在 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 的深入教學課程,請閱讀 Mixing and matching PHP components with composer,作者為 Phil Sturgeon。
快樂寫程式!