jstayton / miner
此包已被废弃且不再维护。未建议替代包。
一个用于构建 SQL 语句的简单 PHP 类。无需手动字符串连接。
v0.10.0
2014-03-29 23:46 UTC
Requires
- php: >=5.1.0
Requires (Dev)
This package is not auto-updated.
Last update: 2020-01-24 14:52:36 UTC
README
注意: 此项目已弃用且不再维护。如果您想继续支持分支版本,请通过 Twitter(@kidjustino)联系我们,以便在此处列出。
Miner
一个用于构建 SQL 语句的简单 PHP 类。无需手动字符串连接。
由 Justin Stayton 在 Monk Development 开发。
要求
- PHP >= 5.1.0
安装
Composer
推荐的安装方法是通过 Composer,一个 PHP 依赖管理器。只需将 jstayton/miner
添加到您的项目 composer.json
文件中
{ "require": { "jstayton/miner": "*" } }
手动安装
- 将
src/Miner.php
复制到您的代码库中,例如到vendor
目录。 - 将
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
- from
- innerJoin
- leftJoin
- rightJoin
- join
- getFrom
- getFromAlias
- getFromString
- getJoinString
- mergeFromInto
- mergeJoinInto
WHERE
- where
- andWhere
- orWhere
- whereIn
- whereNotIn
- whereBetween
- whereNotBetween
- openWhere
- closeWhere
- getWherePlaceholderValues
- getWhereString
- mergeWhereInto
GROUP BY
HAVING
- having
- andHaving
- orHaving
- havingIn
- havingNotIn
- havingBetween
- havingNotBetween
- openHaving
- closeHaving
- getHavingPlaceholderValues
- getHavingString
- mergeHavingInto
ORDER BY
LIMIT
Statement
- execute
- getStatement
- getPlaceholderValues
- isSelect
- isInsert
- isReplace
- isUpdate
- isDelete
- __toString
- mergeInto
Connection
Feedback
请提交一个issue来请求功能或提交bug报告。或者如果您只想提供一些反馈,我也很乐意听到。我还在Twitter上作为@kidjustino可用。
贡献
- 将其Fork。
- 创建您的功能分支(
git checkout -b my-new-feature
)。 - 提交您的更改(
git commit -am '添加了一些功能'
)。 - 推送到分支(
git push origin my-new-feature
)。 - 创建新的Pull Request。