魔幻/magus

此包已被废弃,不再维护。没有建议的替代包。

将数据(带有内置的CSV/JSON解析)导入任何Laravel模型

v1.0.0-beta 2015-01-22 05:35 UTC

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

使用

唯一的前提是配置必须发布,并且要填充的模型已经存在。

如果我们想填充一个包含 namefnamelnameClient 模型,并且我们有一个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许可证。