Downloads
Stars
Version
Get product data from openfoodsfacts with a local driver and an api driver.
Laravel Openfoodfacts Reader requires PHP 8.2+ and Laravel 10.
If you use the local driver currently around 50 GB of disk space are required.
Install the package
First publish the configuration using
php artisan vendor:publish --tag openfoodfactsreader-config
and set the user agent. The User-Agent should be in the form of AppName/Version (ContactEmail). For example, MyApp/1.0 ([email protected]).
This driver uses data imported from the official jsonl export from openfoodfacts. Keep in mind that the decompressed files has ~3.5 Million Products and take up to 50GB of storage at the moment.
First publish the migrations using
php artisan vendor:publish --tag openfoodfactsreader-migrations
Run php artisan migrate
to migrate your database.
gunzip openfoodfacts-products.jsonl.gz
)php artisan openfoodfactsreader:import openfoodfacts-products.jsonl
(asserting the decompressed file exists in the root folder of your application).
namespace App\Models;
use Ccharz\LaravelOpenfoodfactsReader\Driver\Local\OpenfoodfactsProduct as BaseOpenfoodfactsProduct;
class OpenfoodfactsProduct extends BaseOpenfoodfactsProduct
{
...
In the config file of the package you can specify your class:
// config/openfoodfactsreader.php
...
'model' => App\Models\OpenfoodfactsProduct::class
...
This driver uses the official v2 api.
Publish the configuration using
php artisan vendor:publish --tag openfoodfactsreader-config
and set the user agent. The User-Agent should be in the form of AppName/Version (ContactEmail). For example, MyApp/1.0 ([email protected]).
/** @var Ccharz\LaravelOpenfoodfactsReader\Driver\Local\OpenfoodfactsProduct $product */
$product = app(LaravelOpenfoodfactsReader::class)->product('737628064502');
You can access the product data via the data
method of the OpenfoodfactsProduct Model.
You can either use the default driver configured in the config file or specify it using the driver method.
app(LaravelOpenfoodfactsReader::class)->driver('local')->product('737628064502');
app(LaravelOpenfoodfactsReader::class)->driver('v2')->product('737628064502');