bakame / csv-doctrine-collection-bridge
使用 League\Csv 的 Csv Doctrine Collection bridge
1.1.0
2020-06-23 11:33 UTC
Requires
- php: >=7.2
- doctrine/collections: ^1.5
- league/csv: ^9.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpstan/phpstan: ^0.12
- phpstan/phpstan-phpunit: ^0.12
- phpstan/phpstan-strict-rules: ^0.12
- phpunit/phpunit: ^9.2
This package is auto-updated.
Last update: 2024-09-18 12:03:26 UTC
README
本包包含
- 一个将 League Csv 对象转换为 Doctrine Collections 对象的类。
- 一个类,可以启用在 League Csv 对象上使用 Doctrine Collections 强大的 Expression API。
<?php use Bakame\Csv\Extension as CsvExtension; use Doctrine\Common\Collections\Criteria; use League\Csv\Reader; $csv = Reader::createFromPath('/path/to/my/file.csv'); $csv->setHeaderOffset(0); $csv->setDelimiter(';'); $criteria = Criteria::create() ->andWhere(Criteria::expr()->eq('prenom', 'Adam')) ->orderBy( [ 'annee' => 'ASC', 'foo' => 'desc', ] ) ->setFirstResult(0) ->setMaxResults(10) ; //you can do $resultset = CsvExtension\CriteriaConverter::convert($criteria)->process($csv); $result = new CsvExtension\RecordCollection($resultset); //or $collection = new CsvExtension\RecordCollection($csv); $result = $collection->matching($criteria);
系统需求
- league/csv >= 9.6
- doctrine/collection >= 1.6.0
但推荐使用每个依赖的最新稳定版本。
安装
$ composer require bakame/csv-doctrine-collection-bridge
用法
将 League\Csv\Reader
转换为 Doctrine Collection 对象。
<?php use Bakame\Csv\Extension\RecordCollection; use League\Csv\Reader; $csv = Reader::createFromPath('/path/to/my/file.csv'); $csv->setHeaderOffset(0); $csv->setDelimiter(';'); $collection = new RecordCollection($csv);
将 League\Csv\ResultSet
转换为 Doctrine Collection 对象。
<?php $csv = Reader::createFromPath('/path/to/my/file.csv'); $csv->setHeaderOffset(0); $csv->setDelimiter(';'); $stmt = (new Statement()) ->where(function (array $row) { return isset($row['email']) && false !== strpos($row['email'], '@github.com'); }); $collection = new RecordCollection($stmt->process($csv));
使用 Doctrine Criteria 过滤 League\Csv\Reader
对象
您可以使用提供的 Bakame\Csv\Extension\criteria_convert
函数将 Doctrine\Common\Collections\Criteria
对象转换为 League\Csv\Statement
对象。
<?php use Bakame\Csv\Extension\CriteriaConverter; use Doctrine\Common\Collections\Criteria; use League\Csv\Reader; $csv = Reader::createFromPath('/path/to/my/file.csv'); $csv->setHeaderOffset(0); $csv->setDelimiter(';'); $criteria = Criteria::create() ->andWhere(Criteria::expr()->eq('name', 'Adam')) ->orderBy(['years', 'ASC']) ->setFirstResult(0) ->setMaxResults(10) ; $stmt = CriteriaConverter::convert($criteria); $resultset = $stmt->process($csv);
CriteriaConverter 高级用法
<?php use Doctrine\Common\Collections\Criteria; use League\Csv\Statement; public static CriteriaConverter::convert(Criteria $criteria, Statement $stmt = null): Statement public static CriteriaConverter::addWhere(Criteria $criteria, Statement $stmt = null): Statement public static CriteriaConverter::addOrderBy(Criteria $criteria, Statement $stmt = null): Statement public static CriteriaConverter::addInterval(Criteria $criteria, Statement $stmt = null): Statement
CriteriaConverter::convert
将Criteria
对象转换为Statement
对象。CriteriaConverter::addWhere
将Criteria::getWhereExpression
过滤器添加到提交的Statement
对象。CriteriaConverter::addOrderBy
将Criteria::getOrderings
过滤器添加到提交的Statement
对象。CriteriaConverter::addInterval
将Criteria::getFirstResult
和Criteria::getMaxResults
过滤器添加到提交的Statement
对象。
警告:虽然 Criteria
对象是可变的,但 Statement
对象是不可变的。所有返回的 Statement
对象都是新实例
贡献
欢迎贡献,并将得到充分认可。请参阅 CONTRIBUTING 了解详情。
测试
库有一个
- 一个 PHPUnit 测试套件
- 一个使用 PHP CS Fixer 的编码风格合规性测试套件。
- 一个使用 PHPStan 的代码分析合规性测试套件。
要运行测试,请从项目文件夹运行以下命令。
$ composer test
安全性
如果您发现任何安全问题,请通过电子邮件 nyamsprod@gmail.com 联系,而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。