ulue/miner

此包已被弃用且不再维护。作者建议使用 phpcom-lab/miner 包代替。

一个用于构建 SQL 语句的简单 PHP 类。无需手动字符串连接。

v1.0.1 2018-05-05 05:24 UTC

This package is auto-updated.

Last update: 2021-09-04 12:47:21 UTC


README

Latest Stable Version Total Downloads

https://github.com/jstayton/Miner 分支而来

一个用于构建 SQL 语句的简单 PHP 类。无需手动字符串连接。

Justin StaytonMonk Development 开发。

要求

  • PHP > 7.0.0

安装

Composer

推荐通过 Composer 安装,它是一个 PHP 的依赖管理器。

在命令行中

composer require ulue/miner

或者,只需将 ulue/miner 添加到项目中的 composer.json 文件

{
    "require": {
        "ulue/miner": "*"
    }
}

有关更多信息,请访问 Packagist

入门

使用 Miner 编写 SQL 语句与手动编写非常相似,因为大部分语法直接映射到方法

$miner = Miner::create()
      ->select('*')
      ->from('shows')
      ->innerJoin('episodes', 'show_id')
      ->where('shows.network_id', 12)
      ->orderBy('episodes.aired_on', Miner::ORDER_BY_DESC)
      ->limit(20);

现在语句已构建,

$miner->getSql(); // Or $miner->getStatement();

返回带有占位符 (?) 的完整 SQL 字符串,

$miner->getBoundedParams(); // Or $miner->getPlaceholderValues();

返回可以传递给数据库连接或选择的数据抽象层的占位符值数组。或者,如果您希望一次性获取包含已安全引号的值的 SQL 字符串,可以这样做

$miner->getSql(false); // Or $miner->getStatement(false);

但是,如果您使用 PDO,Miner 使执行语句变得更容易

$PDOStatement = $miner->execute();

Miner 可以直接与您的 PDO 连接一起工作,该连接可以在创建 Miner 对象时传递

$miner = Miner::create($PDO)
$miner = new Miner($PDO);

或之后

$miner->setPdoConnection($PDO);

使用

SELECT

SELECT *
FROM shows
INNER JOIN episodes
  ON shows.show_id = episodes.show_id
WHERE shows.network_id = 12
ORDER BY episodes.aired_on DESC
LIMIT 20

使用 Miner

$miner->select('*')
      ->from('shows')
      ->innerJoin('episodes', 'show_id')
      ->where('shows.network_id', 12)
      ->orderBy('episodes.aired_on', Miner::ORDER_BY_DESC)
      ->limit(20);

INSERT

INSERT HIGH_PRIORITY shows
SET network_id = 13,
    name = 'Freaks & Geeks',
    air_day = 'Tuesday'

使用 Miner

$miner->insert('shows')
      ->option('HIGH_PRIORITY')
      ->set('network_id', 13)
      ->set('name', 'Freaks & Geeks')
      ->set('air_day', 'Tuesday');

REPLACE

REPLACE shows
SET network_id = 13,
    name = 'Freaks & Geeks',
    air_day = 'Monday'

使用 Miner

$miner->replace('shows')
      ->set('network_id', 13)
      ->set('name', 'Freaks & Geeks')
      ->set('air_day', 'Monday');

UPDATE

UPDATE episodes
SET aired_on = '2012-06-25'
WHERE show_id = 12
  OR (name = 'Girlfriends and Boyfriends' AND air_day != 'Monday')

使用 Miner

$miner->update('episodes')
      ->set('aired_on', '2012-06-25')
      ->where('show_id', 12)
      ->openWhere(Miner::LOGICAL_OR)
          ->where('name', 'Girlfriends and Boyfriends')
          ->where('air_day', 'Monday', Miner::NOT_EQUALS)
      ->closeWhere();

DELETE

DELETE
FROM shows
WHERE show_id IN (12, 15, 20)
LIMIT 3

使用 Miner

$miner->delete()
      ->from('shows')
      ->whereIn('show_id', array(12, 15, 20))
      ->limit(3);

方法

SELECT

INSERT

REPLACE

UPDATE

DELETE

OPTIONS

SET / VALUES

FROM

WHERE

GROUP BY

HAVING

ORDER BY

LIMIT

Statement

Connection

Feedback

请提交一个issue来请求功能或提交错误报告。或者,如果你只是想提供一些反馈,我也很乐意听取。你还可以在Twitter上找到我,地址是@jstayton

贡献

  1. 分叉它。
  2. 创建你的功能分支(使用命令 git checkout -b my-new-feature)。
  3. 提交你的更改(使用命令 git commit -am '添加了一些功能')。
  4. 推送到分支(使用命令 git push origin my-new-feature)。
  5. 创建一个新的Pull Request。