afilina / nestedsql
.
dev-master / 1.0.x-dev
2015-12-17 19:55 UTC
Requires
- php: >=5.4
- ext-pdo: *
This package is not auto-updated.
Last update: 2024-09-14 17:42:54 UTC
README
PHP >=5.4
您可以通过 Composer 安装此文件
composer require afilina/nestedsql dev-master
这是一个简单的函数,用于将您的 PDO 语句作为嵌套结果集检索。当您对 ORMs 的其他功能不感兴趣时,这可以作为一个替代方案。
这是您应该期望的输出。
stdClass Object ( [albums] => Array ( [1] => stdClass Object ( [id] => 1 [photos] => stdClass Object ( [id] => 1 ) ) [2] => stdClass Object ( [id] => 2 [photos] => stdClass Object ( [id] => 3 ) ) ) )
用法
以下是您格式化 SQL 的方式。函数假定您为每个对象使用一个 id
别名,并且它是唯一的。
SELECT album.id AS albums__id, photo.id AS albums__photos__id FROM album LEFT JOIN photo ON photo.album_id = album.id;
要使用此函数,只需像这样引入它:
$statement = $pdo->prepare($sql); $statement->execute(); $fetch_nested_sql = require 'src/NestedSql.php'; $result = $fetch_nested_sql($statement);
如果您想使用自定义类而不是 stdClass,请在第二个参数中传递它们。如果您想指定单例属性,请在第三个参数中传递它们
$result = $fetch_nested_sql($statement, [ 'albums' => 'CustomAlbum', 'photos' => 'CustomPhoto', ], [ 'photos' ]);
对于任何省略的类,函数将使用 stdClass。
贡献
这是我解决项目中的一个问题的快速且简单的方法。如果您找到了更好的方法或添加了有用的功能,我当然欢迎您提交拉取请求。只要您保持归属,您可以自由地将它纳入您的库中。