如何在 ThinkPHP 中整合 Laravel Eloquent ORM
2020-06-08 05:32
633 查看
前言
之前维护的旧项目采用的 ThinkPHP 3.2,后面学习了 Laravel 后,觉得 TP 的 Model 功能没有 Laravel 强大和方便,并想把 Laravel 里的 Eloquent 用在 TP 里。
好在 Laravel 的 ORM 是独立成包的,可以用于符合要求的其他 PHP 系统中。
整合
要使用的是 illuminate/database 。
- 安装
illuminate/database
根据自己使用的 PHP 版本,通过 composer 安装对应的illuminate/database
版本,例如
composer require illuminate/database:5.3.*
- 接入到 TP 中
在ThinkPHP\Library\Think\Think.class.php
文件中的start
方法的最后一行的App::run();
上方添加如下代码:
$capsule = new \Illuminate\Database\Capsule\Manager; $capsule->addConnection([ 'driver' => C('DB_TYPE'), 'host' => C('DB_HOST'), 'database' => C('DB_NAME'), 'username' => C('DB_USER'), 'password' => C('DB_PWD'), 'charset' => C('DB_CHARSET'), 'collation' => C('DB_COLLATION'), 'prefix' => C('DB_PREFIX'), ]); $capsule->setAsGlobal(); $capsule->bootEloquent();
- 解决 E 方法冲突
illuminate/database 的 vendor\illuminate\support\helpers.php
方法中存在一个方法
/** * Escape HTML special characters in a string. * * @param \Illuminate\Contracts\Support\Htmlable|string $value * @return string */ function e($value) { if ($value instanceof Htmlable) { return $value->toHtml(); } return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false); }
与 TP 的 E 方法冲突。
/** * 抛出异常处理 * @param string $msg 异常消息 * @param integer $code 异常代码 默认为0 * @throws Think\Exception * @return void */ function E($msg, $code=0) { throw new Think\Exception($msg, $code); }
我选择注释了
illuminate/database的方法,搜索后发现没有其他地方用到这个方法,故注释。
完成后就可以愉快地使用 Laravel 的 ORM 来 coding 了。
tips
- TP 的数据库一般不会有 created_at 和 updated_at 字段,而
illuminate/database
会自动维护这两个字段,所以需要在创建的 Model 文件里,添加如下代码
public $timestamps = false;
Enjoy it !
如果觉得文章对你有用,可以请我喝杯咖啡~
版权声明
转载请注明作者和文章出处
作者: X先生
https://blog.csdn.net/u013314679/article/details/105655451
相关文章推荐
- Laravel Eloquent ORM 时如何查询表中指定的字段
- laravel - Eloquent ORM 快速使用
- laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
- Laravel数据库操作之-Eloquent ORM
- laravel组件单独加载(2):模型 Eloquent ORM
- Laravel[Eloquent ORM简介、模型的建立及查询数据]
- Laravel之Eloquent ORM关联
- gorose, 最像 laravel's eloquent 的go数据库操作orm, 风骚的链式调用, 让你深深陷入不能自拔
- laravel5.6 框架操作数据 Eloquent ORM用法示例
- Laravel5.1-Eloquent ORM:起步
- 给 CI 插上翅膀——在 CodeIgniter 2 中使用 Laravel Eloquent ORM
- Laravel Eloquent ORM 多条件查询的例子
- 给 CI 插上翅膀——在 CodeIgniter 2 中使用 Laravel Eloquent ORM
- 到底如何选择PHP框架?Yii、ThinkPHP、laravel、CI... ...?
- Thinkphp中如何书写按照指定字段同步更新的ORM
- Laravel Eloquent ORM--整理
- ThinkPHP如何整合Uploadify上传插件实现异步上传图片
- PHP框架 Laravel Eloquent ORM 批量插入数据 && 批量更新目前没有
- Laravel5.7 Eloquent ORM快速入门详解
- gorose, 最像 laravel's eloquent 的go数据库操作orm, 风骚的链式调用, 让你深深陷入不能自拔