PHPackages                             s1dd/magus - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. s1dd/magus

AbandonedArchivedLibrary[PDF &amp; Document Generation](/categories/documents)

s1dd/magus
==========

Import data (with CSV/JSON parsing built-in) into any Laravel Model

v1.0.0-beta(11y ago)111MITPHPPHP &gt;=5.4.0

Since Jan 22Pushed 11y ago2 watchersCompare

[ Source](https://github.com/sidd/magus)[ Packagist](https://packagist.org/packages/s1dd/magus)[ Docs](https://github.com/s1dd/magus)[ RSS](/packages/s1dd-magus/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

Magus
=====

[](#magus)

Import CSV and JSON data into Laravel models, with the use of mutators to manipulate data before data is stored in the database.

Installation
------------

[](#installation)

Add `s1dd/magus` to the `repositories` section of your `composer.json`.

```
{
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/s1dd/magus"
    }
  ]
}
```

...and as a dependency

```
{
  ...
  "require": {
    "laravel/framework": "4.2.*",
    "s1dd/magus": "dev-master"
  },
  ...
}
```

Add the Service Provider to your `app/config/app.php`:

```
'providers' => [
  ...
  'S1dd\Magus\MagusServiceProvider',
  ...
];
```

...and as an alias so that it can be used as a Facade:

```
'aliases' => [
  ...
  'Magus' => 'S1dd\Magus\MagusFacade',
  ...
];
```

Configuration
-------------

[](#configuration)

If you would like to add mutators to Magus, publish the configuration, and supply an array whose values are Closures.

```
$ php artisan config:publish s1dd/magus

```

The configuration files are at:

```
app/config/packages/s1dd/magus/config.php
app/config/packages/s1dd/magus/fieldmaps.php

```

Usage
-----

[](#usage)

The only prerequisite is that the configuration **must** be published, and the model to populate must already exist.

If we wanted to populate a `Client` model, which contains a `name`, `fname`, and `lname`, and we had a CSV string that houses this data in a different format, i.e.:

```
First Name,Last Name\rSidd,Sridharan

```

We would first need to **parse** the string into an associative array, and then import this array into the database:

```
$dataString = "First Name,Last Name\rSidd,Sridharan";
$data = Magus::parseString($dataString);

Magus::import('client', $data);
```

First, Magus checks the user-supplied `fieldmaps.php` in order to map CSV columns to their respective database columns. Then, Magus resolves the first parameter from the IoC container so it can be used as if it was a model. It then invokes the `create` method to insert it into the database after the input has been "mutated."

### Fieldmaps

[](#fieldmaps)

As described earlier, fieldmaps.php is simply a mapping from CSV column names to database column names. An example:

```
return [
  'map' => [
    'Client' => [
      'Name' => 'name',
      'First Name' => 'fname',
      'Last Name' => 'lname'
    ]
  ]
];
```

### Mutators

[](#mutators)

Mutators are a powerful part of Magus that allow for data manipulation prior to saving. In order to declare a Mutator, open up `config.php`, and add a key for the model which will be updated. Then, for each field that needs to be manipulated, declare a sub-key that points to a closure. To provide a clearer picture:

```
return [

  'Client' => [

    'First Name' => function($value) {
      return strtoupper($value);
    },

    'Last Name' => function($value) {
      return strtolower($value);
    },
  ]

]
```

License
-------

[](#license)

This project is licensed under the MIT license.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4132d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3fb725af1e791c74af6724b8d28a27cc98b83fc236d154f746b6a945f8c6688c?d=identicon)[s1dd](/maintainers/s1dd)

---

Top Contributors

[![sidd](https://avatars.githubusercontent.com/u/2949688?v=4)](https://github.com/sidd "sidd (10 commits)")

---

Tags

jsonlaravelmodelcsvimport

### Embed Badge

![Health badge](/badges/s1dd-magus/health.svg)

```
[![Health](https://phpackages.com/badges/s1dd-magus/health.svg)](https://phpackages.com/packages/s1dd-magus)
```

###  Alternatives

[maatwebsite/excel

Supercharged Excel exports and imports in Laravel

12.7k144.3M712](/packages/maatwebsite-excel)[highsolutions/laravel-lang-import-export

A Laravel package providing artisan commands to import and export language files from and to CSV.

25292.3k](/packages/highsolutions-laravel-lang-import-export)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
