reptily/sql-to-laravel-builder

SQL 到 Laravel 查询构建器

1.0.0 2024-01-01 17:20 UTC

This package is auto-updated.

Last update: 2024-09-30 18:54:39 UTC


README

SQL 到 Laravel 查询构建器,一个用 PHP 编写的转换器

特性

  • 将 SQL 查询转换为 Laravel 查询构建器。
  • 辅助构建 Laravel 文档中指示的查询。
  • 提供选项以与不同的结果进行交互。

支持

Laravel 8

开始使用

手动下载安装

下载仓库并通过 composer.json 安装所需包

Packagist

您还可以通过运行以下命令从 Packagist 安装:

composer require reptily/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 的输入。

结构有三个主要部分

  1. 提取器类 - 帮助以更易于理解和处理的方式提取 SQL 查询部分。
  2. 构建器类 - 帮助构建查询构建器方法。
  3. 创建者 - 负责协调提取器和构建器之间的过程,以生成查询构建器的一部分。

已知问题

  • 尚未对所有情况进行测试。
  • 错误处理不佳。

贡献

请随意为开发、测试或最终错误报告做出贡献。

支持

有关 Marwan - SQL-To-Laravel-Builder 的一般问题,请发推文给 @rexshijaku 或给我发电子邮件至 rexhepshijaku@gmail.com。要快速了解教程,请查看仓库中提供的 examples 文件夹。

作者

Rexhep Shijaku

感谢

感谢所有创建并持续改进 PHP-SQL-Parser 的贡献者,没有它,这个项目将难以实现。

纪念

纪念在 2021 年以色列-巴勒斯坦危机中失去的无辜生命(包括仅六岁的 Marwan al-Masri)。

许可

MIT 许可证

版权所有 (c) 2021 | Rexhep Shijaku

特此授予任何获得本软件及其相关文档副本(“软件”)的人免费使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许将软件提供给获得软件的人使用,但受以下条件限制

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他法律依据,无论该责任产生于、源于或与软件或软件的使用或其他使用方式有关。