如何將 Laravel 的 Eloquent ORM 與 Slim Framework 搭配使用

我在 New Media Campaigns 中建構一個小型 Slim Framework 應用程式。由於這是一個內部應用程式,所以我決定在建構它的同時學習一些新東西。儘管資料庫架構非常簡單,但聽聞 LaravelTaylor 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

快樂寫程式!