魔幻 / magus
此包已被废弃,不再维护。没有建议的替代包。
将数据(带有内置的CSV/JSON解析)导入任何Laravel模型
v1.0.0-beta
2015-01-22 05:35 UTC
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
This package is not auto-updated.
Last update: 2024-02-03 12:00:39 UTC
README
使用mutators在将数据存储到数据库之前操纵数据,将CSV和JSON数据导入Laravel模型。
安装
将 s1dd/magus
添加到您的 composer.json
文件的 repositories
部分。
{ "repositories": [ { "type": "git", "url": "https://github.com/s1dd/magus" } ] }
...并作为一个依赖项
{ ... "require": { "laravel/framework": "4.2.*", "s1dd/magus": "dev-master" }, ... }
将服务提供者添加到您的 app/config/app.php
'providers' => [ ... 'S1dd\Magus\MagusServiceProvider', ... ];
...并作为一个别名,以便它可以作为一个外观使用
'aliases' => [ ... 'Magus' => 'S1dd\Magus\MagusFacade', ... ];
配置
如果您想向魔幻添加mutators,发布配置,并提供一个数组,其值是闭包。
$ php artisan config:publish s1dd/magus
配置文件位于
app/config/packages/s1dd/magus/config.php
app/config/packages/s1dd/magus/fieldmaps.php
使用
唯一的前提是配置必须发布,并且要填充的模型已经存在。
如果我们想填充一个包含 name
、fname
和 lname
的 Client
模型,并且我们有一个CSV字符串以不同的格式存储这些数据,即
First Name,Last Name\rSidd,Sridharan
我们首先需要将字符串解析为关联数组,然后将此数组导入数据库
$dataString = "First Name,Last Name\rSidd,Sridharan"; $data = Magus::parseString($dataString); Magus::import('client', $data);
首先,魔幻检查用户提供的 fieldmaps.php
,以便将CSV列映射到相应的数据库列。然后,魔幻从IoC容器中解析第一个参数,以便它可以像模型一样使用。然后,它在输入经过“突变”后调用 create
方法将其插入数据库。
字段映射
如前所述,fieldmaps.php 简单地是将CSV列名映射到数据库列名的映射。一个示例
return [ 'map' => [ 'Client' => [ 'Name' => 'name', 'First Name' => 'fname', 'Last Name' => 'lname' ] ] ];
突变
突变是魔幻的一个强大功能,允许在保存之前操纵数据。为了声明一个突变,打开 config.php
,并为要更新的模型添加一个键。然后,对于需要操纵的每个字段,声明一个指向闭包的子键。为了提供一个更清晰的图像
return [ 'Client' => [ 'First Name' => function($value) { return strtoupper($value); }, 'Last Name' => function($value) { return strtolower($value); }, ] ]
许可证
本项目采用MIT许可证。