php – 如何將 Eloquent 應用在非 Laravel Framework 中

Composer 安裝

composer require illuminate/database

或在 composer.json 寫入並添加你要的版本號

{
    "require": {
        "illuminate/database": "^5.6"
    }
}

 

建立設定檔

Eloquent/database.php

<?php
// 指定 autoload.php 的路徑
require_once dirname(dirname(__FILE__)) . '/vendor/autoload.php';

use Illuminate\Database\Capsule\Manager as DB;

$db = new DB;

$db->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => '資料表名稱',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

$db->setAsGlobal();
$db->bootEloquent();

return 'Illuminate\Database\Capsule\Manager';

建立資料庫設定檔。在結尾看到 return ‘Illuminate\Database\Capsule\Manager’; 主要由外部替物件重新指定你喜歡的別名。

 

引用

若在 Joomla! 中使用,記得路徑加上 JPATH_ROOT。這裡使用了 class_alias() 替 Class 指定別名,我的範例使用的別名是 ‘DB’,你可以修改成喜歡的識別名稱。

if (!class_exists('DB')) class_alias(require_once(JPATH_ROOT.'/Eloquent/database.php'), 'DB');

 

使用範例

下面介紹 CRUD 的寫法吧。其他更多的可以參考 Laravel 的介紹

一般環境

<?php 
class_alias(require_once('Eloquent/database.php'), 'DB');

// 查詢
$result = DB::table('dvsmx_blog_articles')
    ->select(['id', 'title', 'introtext'])
    ->get();

// print_r($result);


// 新增
DB::table('dvsmx_blog_articles')
    ->insert(
    [
        'title' => '標題',
        'created' => DB::raw('NOW()')
    ]);
echo "最後新增的主鍵:" . DB::getPdo()->lastInsertId() . "<br>";


// 修改
$num = DB::table('dvsmx_blog_articles')
    ->where('id', '>', 52)
    ->update(
    [
        'title' => '標題2' 
    ]);

echo "成功修改數量:" . $num . "<br>";


// 刪除
$num = DB::table('dvsmx_blog_articles')
    ->where('id', '>', 52)
    ->delete();
echo "成功刪除數量:" . $num . "<br>";

Comments

發表迴響