rexshijaku / sql-to-laravel-builder
SQL 到 Laravel 查询构建器
Requires
- greenlion/php-sql-parser: ^4.4
Requires (Dev)
- phpunit/phpunit: ^9.5
README
SQL 到 Laravel 查询构建器,一个用 PHP 编写的转换器
支持
特性
- 将 SQL 查询转换为 Laravel 查询构建器。
- 辅助根据 Laravel 文档中的说明构建查询。
- 提供选项以生成不同结果。
支持
Laravel 8
演示
在线演示
实时演示和免费使用请访问 此处。
开始使用
手动下载安装
下载存储库,并通过 composer.json 安装所需的包
Packagist
您也可以通过以下命令从 Packagist 安装它:
composer require rexshijaku/sql-to-laravel-builder
用法
简单示例
<?php use RexShijaku\SQLToLaravelBuilder\SQLToLaravelBuilder; require_once dirname(__FILE__) . './vendor/autoload.php'; $options = array('facade' => 'DB::'); $converter = new SQLToLaravelBuilder($options); $sql = "SELECT COUNT(*) FROM members"; echo $converter->convert($sql);
这将产生以下结果
DB::table('members')->count();
更复杂的示例
$sql = "SELECT department_id, count(*) FROM members LEFT JOIN details AS d ON d.member_id = members.member_id WHERE ( age = 25 OR ( salary = 2000 AND gender = 'm' ) ) AND id > 15 GROUP BY department_id HAVING height > 1.60"; echo $converter->convert($sql);
这将生成以下结果
DB::table('members') ->select('department_id', DB::raw('count(*)')) ->leftJoin('details AS d', 'd.member_id', '=', 'members.member_id') ->where(function ($query) { $query->where('age', '=', 25) ->orWhere(function ($query) { $query->where('salary', '=', 2000) ->where('gender', '=', 'm'); }); }) ->where('id', '>', 15) ->groupBy('department_id') ->having('height', '>', 1.60) ->get();
注意
如果您需要更改选项或更全面地了解提供的选项,请参阅以下“选项”部分。Laravel 8 查询构建器文档中提供了数十个用例的示例,这些示例位于 examples 文件夹中。
选项
以下简要解释了一些重要选项
它是如何工作的?
SQL-To-Laravel-Builder 是基于 PHP-SQL-Parser 构建的。虽然 PHP-SQL-Parser 负责将给定的 SQL 查询作为输入进行解析。PHP-SQL-Parser 的结果是 SQL-To-Laravel-Builder 的输入。
结构有三个主要部分
- 提取器类 - 帮助以更易于理解和处理的方式提取 SQL 查询部分。
- 构建器类 - 帮助构建查询构建器方法。
- 创建者 - 协调提取器和构建器之间的过程,以生成查询构建器的部分。
已知问题
- 并非在所有情况下都进行了测试。
- 错误处理不佳。
贡献
请随时在开发、测试或最终错误报告方面做出贡献。
支持
有关 Marwan - SQL-To-Laravel-Builder 的一般问题,请在 @rexshijaku 上发推文或给我发邮件至 rexhepshijaku@gmail.com。要快速了解教程,请查看存储库中提供的 examples 文件夹。
作者
Rexhep Shijaku
谢谢
所有为创建和不断改进 PHP-SQL-Parser 做出贡献的贡献者,没有它,这个项目将难以实现。
纪念
纪念在 2021 年以色列-巴勒斯坦危机中失去的无辜生命(包括年仅六岁的 Marwan al-Masri)。
许可证
MIT 许可证
版权所有 (c) 2021 | Rexhep Shijaku
特此授予任何获得此软件及其相关文档文件(“软件”)副本的人免费使用该软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许提供软件的人按以下条件这样做:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权行为或其他行为中产生、源于或与软件的使用或其他方式相关。