资讯专栏INFORMATION COLUMN

如何在 ThinkPHP 中整合 Laravel Eloquent ORM

Labradors / 1126人阅读

摘要:前言之前维护的旧项目采用的,后面学习了后,觉得的功能没有强大和方便,并想把里的用在里。好在的是独立成包的,可以用于符合要求的其他系统中。整合要使用的是。

前言

之前维护的旧项目采用的 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 中
在 ThinkPHPLibraryThinkThink.class.php 文件中的 start方法的最后一行的 App::run(); 上方添加如下代码:

$capsule = new IlluminateDatabaseCapsuleManager;
$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 的 vendorilluminatesupporthelpers.php 方法中存在一个方法

  /**
     * Escape HTML special characters in a string.
     *
     * @param  IlluminateContractsSupportHtmlable|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 ThinkException
 * @return void
 */
function E($msg, $code=0) {
    throw new ThinkException($msg, $code);
}

我选择注释了 illuminate/database 的方法,搜索后发现没有其他地方用到这个方法,故注释。

完成后就可以愉快地使用 Laravel 的 ORM 来 coding 了。

tips

TP 的数据库一般不会有 created_at 和 updated_at 字段,而 illuminate/database 会自动维护这两个字段,所以需要在创建的 Model 文件里,添加如下代码

public $timestamps = false;

本文排版遵照 中文文案排版指北(简体中文版)

Enjoy it !
如果觉得文章对你有用,可以请我喝杯咖啡~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30580.html

相关文章

  • 利用 Laravel Resources 来整合第三方 API 数据

    摘要:对于某些应用程序,可能需要第三方服务或者来提取某些数据,将该数据转换为所需的响应,并将其传送到客户端界面。使用中间件来处理响应数据可以确保数据库的一致性。 showImg(https://segmentfault.com/img/remote/1460000018016736?w=1000&h=421); 对于某些应用程序,可能需要第三方服务或者 API 来提取某些数据,将该数据转换为...

    Jonathan Shieber 评论0 收藏0
  • 使用 Laravel 框架开发是什么样的体验

    摘要:但也因为应有尽有使得框架的性能比其他高性能框架低了些,为此给了几个解决方案路由缓存经有关部门研究,路由缓存可有效加快访问速度以上。有朋友说框架最重要的东西是路由,我倒认为最重要的是框架中异于其他框架且能解决痛点的东西,如的。 showImg(https://segmentfault.com/img/remote/1460000006767764); 在程序界的远古时期,大神们手持键盘敲...

    Miracle_lihb 评论0 收藏0
  • laravel5.5手写教程4Eloquent ORM分页及软删除

    摘要:从而达到了软删除。不过,你可以通过在查询中调用方法来强制查询已被软删除的模型方法也可以被用在关联查询只取出软删除数据会只取出软删除数据恢复被软删除的模型有时候你可能希望取消删除一个已被软删除的模型。 Laravel 有三宝,路由、容器和 Eloquent ORM,Eloquent ORM。我个人一直比较推荐于在实际操作中学习,之前简单了解了路由和Eloquent ORM的基本用法,今天...

    mindwind 评论0 收藏0
  • laravel 数据迁移与 Eloquent ORM

    摘要:同时使用数据迁移管理数据库,可以与团队进行共享以及编辑。实际项目根据需求进行记录,以及选择存储方式。使用命令可以很方便的创建模型以及数据迁移。,参数在创建模型的同时也创建了数据迁移文件。参考资料数据库操作迁移快速入门。 导语 数据库可以说是后端开发最常用,也是最重要的部分。laravel 提供了很实用的 Eloquent ORM 模型类,简单、直观的与数据库进行交互。同时使用数据迁移管...

    tulayang 评论0 收藏0
  • windows下laravel5.5手写教程2路由Eloquent ORM操作(适合初学者)

    摘要:一路由目录众所周知,对于我们熟知的任何一款框架,例如路由系统都是极其重要的存在。文件用于定义界面的路由。定义在中的路由都是无状态的,并且被分配了中间件组。生成的控制器为每个行为保留了方法,同时还包括了处理动作和的声明注释。 一、路由目录 众所周知,对于我们熟知的任何一款PHP框架,例如TP、CI、YII、路由系统都是极其重要的存在。 对于laravel框架也一样,对于数据库的操作,无非...

    BlackFlagBin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<