如何在 ThinkPHP 中整合 Laravel Eloquent ORM
发布网友
发布时间:2022-04-06 02:27
我来回答
共2个回答
懂视网
时间:2022-04-06 06:48
下面由Laravel教程栏目给大家介绍如何把开发中常用class的整合成了一个包,避免每次重复复制粘贴的方法,希望对需要的朋友有所帮助!
laravel-quick
laravel-quick(github 地址:https://github.com/youyingxiang/laravel-quick.git) 封装了一些我们开发中常见的工具,使开发变得更高效
主要包含翻译了验证的语言包提示根据 SymfonyComponentHttpFoundationResponse 为状态码的接口格式异常类处理集成基于 redis 的各种缓存操作service,repository,trait的 artisan 命令生成;安装
composer require yxx/laravel-quick
linux 和 mac
php artisan vendor:publish --provider="YxxLaravelQuickLaravelQuickServiceProvider"
windows
php artisan vendor:publish --provider="YxxLaravelQuickLaravelQuickServiceProvider"
怎么使用
异常使用例子use YxxLaravelQuickExceptionsApiApiNotFoundException;// 请求参数错误throw new ApiRequestException();// 404 未找到throw new ApiNotFoundException();// 系统错误throw new ApiSystemException()// 未授权throw new ApiUnAuthException()自定义错误继承YxxLaravelQuickExceptions自己参照对应代码自定义
api 接口使用use YxxLaravelQuickTraitsJsonResponseTrait// 成功return $this->success("消息",['name'=>"张三"]);// 失败return $this->error("错误");// 自定义return $this->apiResponse(Response::HTTP_BAD_GATEWAY,"502错误");
缓存的使用(封装了 redis 的一些方法)use YxxLaravelQuickFacadesCacheClient;CacheClient::hSet("test","1","张三");CacheClient::hGet("test","1");CacheClient::lPush("test","1");具体参考YxxLaravelQuickServicesCacheService里面的方法....
artisan 命令
创建 Trait php artisan quick:create-trait test
创建 Service php artisan quick:create-service Test/TestService
创建 Repository php artisan quick:create-repository Test
热心网友
时间:2022-04-06 03:56
安装 illuminate/database根据自己使用的 PHP 版本,通过 composer 安装对应的 illuminate/database 版本,例如
composer require illuminate/database:5.3.*
接入到 TP 中
在 ThinkPHPLibraryThinkThink.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 的 vendorilluminatesupporthelpers.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 了。