PHPackages                             yesccx/laravel-db-query - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. yesccx/laravel-db-query

ActiveLibrary[Database &amp; ORM](/categories/database)

yesccx/laravel-db-query
=======================

Laravel db query

v1.0.3(2y ago)06.2kMITPHPPHP ^8.1.0

Since Apr 16Pushed 2y ago1 watchersCompare

[ Source](https://github.com/yesccx/laravel-db-query)[ Packagist](https://packagist.org/packages/yesccx/laravel-db-query)[ Docs](https://github.com/yesccx/laravel-db-query)[ RSS](/packages/yesccx-laravel-db-query/feed)WikiDiscussions 1.x Synced 1mo ago

READMEChangelogDependencies (1)Versions (6)Used By (0)

Laravel-DB-Query
================

[](#laravel-db-query)

在 **Laravel** 中便捷的进行原生 **MYSQL** 语句查询

[![For Laravel 5](https://camo.githubusercontent.com/6f68f16ce18e7468ec2bf463ae6b902dc2e186030d484981174dcb8e7981a5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d392e2a2d677265656e2e737667)](https://github.com/yesccx/laravel-db-query)[![Latest Stable Version](https://camo.githubusercontent.com/84e86a23843d1c7fb615c688122f9a3bf42d4dba6a0a294b5ab92ff0f2302154/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7965736363782f6c61726176656c2d64622d71756572792e737667)](https://packagist.org/packages/yesccx/laravel-db-query)[![Latest Unstable Version](https://camo.githubusercontent.com/14a812a879783f5d0b1e7719f27b9ead3943a104a5203253cda7c5e4c4d7369f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f767072652f7965736363782f6c61726176656c2d64622d71756572792e737667)](https://packagist.org/packages/yesccx/laravel-db-query)[![Total Downloads](https://camo.githubusercontent.com/3b61138b044d84ed6726bbeee32250f4a25e79068c2d9768c516b9bc2117170a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7965736363782f6c61726176656c2d64622d71756572792e7376673f6d61784167653d32353932303030)](https://packagist.org/packages/yesccx/laravel-db-query)[![License](https://camo.githubusercontent.com/fe8be171e1c64b303ef66753127f84e51efb9cf02c7f422fa27cfdfb6c45d9e5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7965736363782f6c61726176656c2d64622d71756572792e7376673f6d61784167653d32353932303030)](https://packagist.org/packages/yesccx/laravel-db-query)

目录
==

[](#目录)

- [目录](#%E7%9B%AE%E5%BD%95)
- [安装](#%E5%AE%89%E8%A3%85)
    - [运行环境](#%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83)
    - [通过Composer引入依赖包](#%E9%80%9A%E8%BF%87composer%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96%E5%8C%85)
    - [发布配置文件](#%E5%8F%91%E5%B8%83%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)
- [开始使用](#%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8)
    - [`DBQuery` 查询](#dbquery-%E6%9F%A5%E8%AF%A2)
        - [简单查询](#%E7%AE%80%E5%8D%95%E6%9F%A5%E8%AF%A2)
        - [模板查询](#%E6%A8%A1%E6%9D%BF%E6%9F%A5%E8%AF%A2)
        - [查询缓存](#%E6%9F%A5%E8%AF%A2%E7%BC%93%E5%AD%98)
        - [更多查询方法](#%E6%9B%B4%E5%A4%9A%E6%9F%A5%E8%AF%A2%E6%96%B9%E6%B3%95)
    - [查询服务类](#%E6%9F%A5%E8%AF%A2%E6%9C%8D%E5%8A%A1%E7%B1%BB)
- [API](#api)
    - [Queries](#queries)
        - [get(): \\Illuminate\\Support\\Collection](#get-illuminatesupportcollection)
        - [find(mixed $default = null): mixed](#findmixed-default--null-mixed)
        - [first(mixed $default = null): mixed](#firstmixed-default--null-mixed)
        - [value(string $column, mixed $default = null): mixed](#valuestring-column-mixed-default--null-mixed)
        - [pluck(string $column): \\Illuminate\\Support\\Collection](#pluckstring-column-illuminatesupportcollection)
        - [exists(): bool](#exists-bool)
    - [ENV](#env)
        - [YDQ\_CACHE\_ENABLED](#ydq_cache_enabled)
        - [YDQ\_CACHE\_DRIVER](#ydq_cache_driver)
- [使用建议](#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE)
- [License](#license)

安装
==

[](#安装)

运行环境
----

[](#运行环境)

运行环境要求PHP ^8.1.0Laravel Framework ^9.0通过Composer引入依赖包
---------------

[](#通过composer引入依赖包)

通过终端进入项目根目录，执行以下命令引入依赖包：

```
> composer require yesccx/laravel-db-query:1.x
```

发布配置文件
------

[](#发布配置文件)

如果需要额外配置，**可选择** 发布配置文件

```
> php artisan vendor:publish --tag=db-query-config
```

开始使用
====

[](#开始使用)

`DBQuery` 查询
------------

[](#dbquery-查询)

### 简单查询

[](#简单查询)

将连接配置名传递给 `connection` 方法

> 连接配置通常来自 `database.php` 配置文件中的 `connections`

```
use Yesccx\DBQuery\DBQuery;

$data = DBQuery::connection('mysql')
    ->statement('select * from users where id = 1')
    ->get();
```

还可以直接传入连接配置（ *目前仅支持 `MYSQL` 驱动* ）

```
use Yesccx\DBQuery\DBQuery;

$data = DBQuery::connection([
        'driver' => 'mysql',
        'host' => '127.0.0.1'
        'username' => 'example',
        'password' => 'example',
        // ...
    ])
    ->statement('select * from users where id = 1')
    ->get();
```

### 模板查询

[](#模板查询)

在语句中定义占位符后，可以使用链式方法如 `where`、`select`、`group by`、`order by` 等进行查询

```
use Yesccx\DBQuery\DBQuery;

$data = DBQuery::connection('mysql')
    ->statement('select * from users where @WHERE@')
    ->where('id', 1)
    ->get();

$data = DBQuery::connection('mysql')
    ->statement('select @COLUMNS@ from users where (@WHERE@) and deleted_at is null')
    ->select('id', 'name')
    ->where('id', 1)
    ->get();
```

目前支持的占位符：

类型示例`@WHERE@``select * from a where id > 1 and  (@WHERE@)``@COLUMNS@``select @COLUMNS@ from a``@GROUPBY@``select * from a group by @GROUPBY@``@HAVING@``select * from a group by id having @HAVING@``@ORDERBY@``select * from a order by @ORDERBY@``@LIMIT@``select * from a limit @LIMIT@``@OFFSET@``select * from a offset @OFFSET@`### 查询缓存

[](#查询缓存)

默认情况下关闭查询缓存，可以通过配置 `db-query.cache.enabled` 进行开启，开启后传递给 `cache` 方法一个有效时间（单位秒）对查询结果进行缓存

> 通常情况下可以直接配置 `env` 中的 `YDQ_CACHE_ENABLED` 进行开启

```
use Yesccx\DBQuery\DBQuery;

$data = DBQuery::connection('mysql')
    ->statement('select * from users where @WHERE@')
    ->where('id', 1)
    // 将查询结果缓存60秒
    ->cache(60)
    ->get();
```

> 如果需要指定缓存驱动、前缀等，可以通过配置 `db-query.cache.driver`

### 更多查询方法

[](#更多查询方法)

查询允许链式的使用 `Laravel` `Illuminate\Database\Query\Builder` 类中支持的方法，此外可以通过其它方法获取查询结果，参考 [API章节](#api)

> 注意：不能使用 `Illuminate\Database\Query\Builder` 中的 `get`、`first`、`find`、`paginate`、`count` 等方法

查询服务类
-----

[](#查询服务类)

继承 `DBQueryService`，实现 `connection` 方法后在类中使用 `statement` 方法进行查询。这种方式能方便的组织和管理原生的查询语句

```
