ooxif / laravel-query-param by ooxif

Treats binary data in a correct way with Laravel's database system (Eloquent)
3,772
5
3
Package Data
Maintainer Username: ooxif
Maintainer Contact: oo@xif.at (ooxif)
Package Create Date: 2015-05-29
Package Last Update: 2016-06-15
Language: PHP
License: MIT
Last Refreshed: 2024-04-25 03:02:30
Package Statistics
Total Downloads: 3,772
Monthly Downloads: 1
Daily Downloads: 0
Total Stars: 5
Total Watchers: 3
Total Forks: 3
Total Open Issues: 1

laravel-query-param

Treats binary data in a correct way with Laravel's database system (Eloquent).

What laravel-query-param does

Laravel uses PDO & PDOStatement, passes parameters to PDOStatement::execute().
PDOStatement::execute() treats all parameters as PDO::PARAM_STR which breaks some binary data.

laravel-query-param overrides PDOStatement::execute() to treat binary data as PDO::PARAM_LOB.

Install

composer require "ooxif/laravel-query-param:1.0.*"

then add 'Ooxif\LaravelQueryParam\QueryParamServiceProvider', to providers in config/app.php.

Examples

// table contains a binary column
Schema::create('images', function ($table) {
    $table->increments();
    $table->timestamps();
    $table->binary('data');
});


// use ModelTrait, add '(column name)' => 'binary' to $casts
class Image extends Eloquent
{
    use Ooxif\LaravelQueryParam\ModelTrait;

    protected $table = 'images';
    
    protected $casts = [
        'data' => 'binary',
    ];
}


$lob = 'some binary data'; 
$image = new Image();

// setting/getting 
$image->data = $lob;
$image->data; // object(Ooxif\LaravelQueryParam\Param\ParamLob)
$image->data->value() === $lob; // true

// saving
$image->save();

// querying (model) - use param_lob()
$image = Image::where('data', param_lob($lob))->first();

// querying (db) - use param_lob()
$result = DB::table('images')->where('data', param_lob($lob))->first();
$result->data === $lob; // true