php – Joomla! 使用第三方 Eloquent 取代 JDatabase 連接資料庫
- 看這篇教學之前,請先學會這篇 Joomla! – 如何自動載入類別庫或 composer 到全域
修改 Plugin
承上篇文章,我們修改系統外掛中的 onAfterInitialise() 事件
<?php defined('_JEXEC') or die; class plgSystemMylib extends JPlugin { public function __construct(&$subject, $config) { parent::__construct($subject, $config); } // 3. 建立連接 Eloquent 方法 private function eloquent() { // 4. 註冊方便的 查詢建構器 (query builder) 別名到全域類別 DB class_alias('Illuminate\Database\Capsule\Manager', 'DB'); $db = new \DB; $db->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'joomla', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $db->setAsGlobal(); $db->bootEloquent(); } public function onAfterInitialise() { JLoader::registerNamespace('Jsnlib', JPATH_LIBRARIES . '/src'); // 1. 載入 composer autoload require_once JPATH_ROOT . '/vendor/autoload.php'; // 2. 呼叫 $this->eloquent(); } }
這樣未來在任何模型 Model 中,都可以自由地直接使用如
$builder = \DB::table("yoi5u_something"); $builder->select(['*']); $builder->where("s_id", $param->s_id); $result = $builder->get();
可以參考 如何將 Eloquent 應用在非 Laravel Framework 中。