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

v0.10.0 2014-03-29 23:46 UTC

This package is auto-updated.

Last update: 2024-09-09 16:47:35 UTC


README

Latest Stable Version Total Downloads

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

由Justin Stayton在Monk Development期间开发,Twitter:Justin Stayton

需求

  • PHP >= 5.1.0

安装

Composer

推荐通过Composer进行安装,它是一个PHP依赖管理器。只需将jstayton/miner添加到您的项目composer.json文件中

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

更多详情请访问Packagist

手动安装

  1. src/Miner.php复制到您的代码库中,例如到vendor目录。
  2. Miner类添加到自动加载器或直接require该文件。

入门

使用Miner构建SQL与手动编写非常相似,因为大多数语法都直接映射到方法

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

现在语句已构建

$Miner->getStatement();

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

$Miner->getPlaceholderValues();

返回可以传递到您选择的数据库连接或抽象层的占位符值数组。或者,如果您想一次性获取所有内容,可以获取带有已安全引号的值的SQL字符串

$Miner->getStatement(false);

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

$PDOStatement = $Miner->execute();

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

$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

语句

Connection

Feedback

请打开一个问题来请求功能或提交错误报告。或者,如果您只想提供一些反馈,我也非常愿意倾听。您也可以在我的Twitter上找到我,账号是@jstayton

贡献

  1. 分支它。
  2. 创建您的功能分支(git checkout -b my-new-feature)。
  3. 提交您的更改(git commit -am '添加了一些功能')。
  4. 推送到分支(git push origin my-new-feature)。
  5. 创建一个新的拉取请求。