Add MariaDB JSON select support to Laravel
Clone or download
ybr-nx Merge pull request #11 from timrspratt/master
support unquoting using ->>
Latest commit 521b48e Dec 16, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
src support unquoting using ->> Dec 10, 2018 added package autodiscover for laravel 5.5 and fixed README Sep 23, 2017
composer.json added laravel 5.7 Aug 17, 2018


Add MariaDB JSON support to Laravel. Requires at least MariaDB 10.2.3 (and 10.2.7 to use ->json() migrations)


Using composer:

$ composer require ybr-nx/laravel-mariadb

Configure (only Larvel 5.3 and 5.4)

Include MariaDBServiceProvider in your config/app.php:

'providers' => [
     * Package Service Providers...

set driver in database configuration to mariadb

'defaultconnection' => [
    'driver' => 'mariadb',

Added functionality


Adds needed validation to json fields during migrations

$table->json('field') //CHECK (JSON_VALID(field))
$table->json('field')->nullable() //CHECK (field IS NULL OR JSON_VALID(field))
Query builder

Builds json select statements to work with MariaDB

$query->where('somejson->something->somethingelse', 2)
DB::table('sometable')->select('sometable.somedata', 'sometable.somejson->somedata as somejsondata')

And also JSON_SET() works in MariaDB as in MySQL 5.7

DB::table('sometable')->where('somejson->somedata', $id)->update(['somejson->otherdata' => 'newvalue']);

NB There is bug in MariaDB < 10.2.8 JSON_EXTRACT() behaviour function. It's fixed in MariaDB 10.2.8:

//works with string in MySQL & MariaDB 10.2.8
$query->where('somejson->something->somethingelse', 'somedata')

//works with string in MariaDB < 10.2.8
$query->where('somejson->something->somethingelse', '"somedata"')