PHPackages                             justbetter/laravel-akeneo - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. justbetter/laravel-akeneo

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

justbetter/laravel-akeneo
=========================

Akeneo wrapper for Laravel

0.0.3(3y ago)3321MITPHPPHP ^8.0

Since Nov 29Pushed 3y ago5 watchersCompare

[ Source](https://github.com/justbetter/laravel-akeneo)[ Packagist](https://packagist.org/packages/justbetter/laravel-akeneo)[ Docs](https://github.com/justbetter/laravel-akeneo)[ GitHub Sponsors](https://github.com/justbetter)[ RSS](/packages/justbetter-laravel-akeneo/feed)WikiDiscussions main Synced 3d ago

READMEChangelog (3)Dependencies (13)Versions (5)Used By (0)

> ⚠️ **Abandoned**: This package is abandoned, we have developed a [new client](https://github.com/justbetter/laravel-akeneo-client).

Akeneo wrapper for Laravel
==========================

[](#akeneo-wrapper-for-laravel)

[![Latest Version on Packagist](https://camo.githubusercontent.com/da3b343df179879c816dd69ec64107a74c0eac25365c2d59a137da74b0bae41e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a7573746265747465722f6c61726176656c2d616b656e656f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/justbetter/laravel-akeneo)[![GitHub Code Quality Action Status](https://camo.githubusercontent.com/e4cd9da24eaaa3b90cc57ad22fe66a74eb7d434e5dbf30b9f6ee4a88dd9e06ca/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6a7573746265747465722f6c61726176656c2d616b656e656f2f636f64652d7175616c6974793f6c6162656c3d74657374732b2532362b7374617469632b616e616c79736973)](https://github.com/justbetter/laravel-akeneo/actions/workflows/code-quality.yml?query=workflow%3Acode-quality++branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/3a1ed453399ec685842becc71f27300e36feb0cfc6144c7eed36d737aa63c7ce/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6a7573746265747465722f6c61726176656c2d616b656e656f2f436865636b253230262532306669782532307374796c696e673f6c6162656c3d636f64652532307374796c65)](https://github.com/justbetter/laravel-akeneo/actions?query=workflow%3A%22Check+%26+fix+styling%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/b3544a5c00b46dfb4b7ea419d20d6bb283ea5686797adcdc1157b520cd3b08e1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a7573746265747465722f6c61726176656c2d616b656e656f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/justbetter/laravel-akeneo)

This package allows you to work with Akeneo in a more Laravel like way.

Requirements
------------

[](#requirements)

- PHP 8 or above
- Akeneo installation

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

[](#installation)

You can install the package via composer:

```
composer require justbetter/laravel-akeneo
```

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

[](#configuration)

Add the following values to your `.env` file:

```
AKENEO_URL=
AKENEO_CLIENT_ID=
AKENEO_SECRET=
AKENEO_USERNAME=
AKENEO_PASSWORD=

```

You can optionally publish the config file with:

```
php artisan vendor:publish --provider="JustBetter\Akeneo\AkeneoServiceProvider" --tag="akeneo-config"
```

This is the contents of the published config file:

```
return [
    'models' => [
        'product_model' => \JustBetter\Akeneo\Models\ProductModel::class,
        'product'       => \JustBetter\Akeneo\Models\Product::class,
        'attribute'     => \JustBetter\Akeneo\Models\Attribute::class,
        'channel'       => \JustBetter\Akeneo\Models\Channel::class,

        'attribute_types' => [
            'Simpleselect' => \JustBetter\Akeneo\Models\Attribute\Simpleselect::class,
            'Multiselect'  => \JustBetter\Akeneo\Models\Attribute\Multiselect::class,
            'Text'         => \JustBetter\Akeneo\Models\Attribute\Text::class,
            'Date'         => \JustBetter\Akeneo\Models\Attribute\Date::class,
        ],
    ],

    'connections' => [
        'default' => [
            'url'       => env('AKENEO_URL'),
            'client_id' => env('AKENEO_CLIENT_ID'),
            'secret'    => env('AKENEO_SECRET'),
            'username'  => env('AKENEO_USERNAME'),
            'password'  => env('AKENEO_PASSWORD'),
        ],
    ],

    'cache_ttl' => 30,
];
```

Usage
-----

[](#usage)

supported features:

- Multiple Akeneo connections (WIP)
- Custom model classes
- Product Models
    - Get all
    - Get all lazily
    - Find by code
    - Save
- Products
    - Get all
    - Get all lazily
    - Find by code
    - Save

### How to use

[](#how-to-use)

#### All

[](#all)

Get all of the resources from Akeneo

```
$models = ProductModel::all();
```

This will return a `Collection` by default but can be modified by overwriting the `newCollection` method on your custom model.

The `all()` method can also be cached by setting the TTL in the config

#### Lazy

[](#lazy)

Getting all of the resources lazily from Akeneo returns a `LazyCollection`

```
$models = ProductModel::lazy();
```

See the laravel docs on [lazy collections](https://laravel.com/docs/8.x/collections#lazy-collections) for a full list of methods

#### Find

[](#find)

Find a resource by its code

```
$product = Product::find('code-123');
```

#### Attributes

[](#attributes)

Calling an attribute code on a model will return a class of that attributes type. These are defined in the config and can be extended easily.

```
$product->product_name->setValue(
    data: 'test product 3',
    locale: null, # default
    scope: null # default
);
```

##### Options

[](#options)

Options can be constructed and passed to attributes compatible with them

```
$option = \JustBetter\Akeneo\DataObjects\Option::make(
    data: 'tag 1',
    locale: null,
    scope: null
)

$product->tags->addOption($option);

$product->tags->removeOption($option);

$product->tags->syncOptions([$option1, $option2]);
```

#### Save

[](#save)

Save an altered model and persist it to akeneo

```
$product = Product::find('code-123');

$product->product_name->setValue(
    data: 'test product 3',
    locale: null, # default
    scope: null # default
);

$product->save();
```

Testing
-------

[](#testing)

The workflow requires `99%` of the package to be tested.

```
make test
# -- OR --
make coverage
```

Make sure to also run static analysis checks

```
make analysis
```

Or combine the 2 requirements

```
make all
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Quinten Buis](https://github.com/quintenbuis)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 70% 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

Every ~86 days

Total

3

Last Release

1453d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2d00b3f55cd4ae8b8cfb001a644ed6c7a1127a956c24375bcfe16ce12bd89bed?d=identicon)[justbetter](/maintainers/justbetter)

---

Top Contributors

[![quintenbuis](https://avatars.githubusercontent.com/u/36452184?v=4)](https://github.com/quintenbuis "quintenbuis (35 commits)")[![VincentBean](https://avatars.githubusercontent.com/u/3906942?v=4)](https://github.com/VincentBean "VincentBean (9 commits)")[![ramonrietdijk](https://avatars.githubusercontent.com/u/85165272?v=4)](https://github.com/ramonrietdijk "ramonrietdijk (5 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (1 commits)")

---

Tags

laraveljustbetterlaravel-akeneo

###  Code Quality

TestsPest

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/justbetter-laravel-akeneo/health.svg)

```
[![Health](https://phpackages.com/badges/justbetter-laravel-akeneo/health.svg)](https://phpackages.com/packages/justbetter-laravel-akeneo)
```

###  Alternatives

[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

22.8k69.3k](/packages/grumpydictator-firefly-iii)[gehrisandro/tailwind-merge-laravel

TailwindMerge for Laravel merges multiple Tailwind CSS classes by automatically resolving conflicts between them

341682.2k18](/packages/gehrisandro-tailwind-merge-laravel)[maestroerror/laragent

Power of AI Agents in your Laravel project

630106.4k](/packages/maestroerror-laragent)[backpack/basset

Dead-simple way to load CSS or JS assets only once per page, when using Laravel 10+.

202832.4k6](/packages/backpack-basset)[nativephp/mobile

NativePHP for Mobile

82724.0k43](/packages/nativephp-mobile)[firefly-iii/data-importer

Firefly III Data Import Tool.

7545.8k](/packages/firefly-iii-data-importer)

PHPackages © 2026

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