Skip to content
Icon

WARNING You're browsing the documentation for an old version of LARAVEL-OCI8. Consider upgrading your project to laravel-oci8 9.0.

Oracle Blob

Querying a blob field will now load the value instead of the OCI-Lob object.

$data = DB::table('mylobs')->get();
foreach ($data as $row) {
echo $row->blobdata . '<br>';
}

##Inserting a blob via transaction

DB::transaction(function($conn){
$pdo = $conn->getPdo();
$sql = "INSERT INTO mylobs (id, blobdata)
VALUES (mylobs_id_seq.nextval, EMPTY_BLOB())
RETURNING blobdata INTO :blob";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':blob', $lob, PDO::PARAM_LOB);
$stmt->execute();
$lob->save('blob content');
});

##Inserting Records Into A Table With Blob And Auto-Incrementing ID

$id = DB::table('mylobs')->insertLob(
array('name' => 'Insert Binary Test'),
array('blobfield'=>'Lorem ipsum Minim occaecat in velit.')
);

Note: When using the insertLob method, you can specify the auto-incrementing column name as the third parameter in insertLob function. It will default to "id" if not specified.

##Updating Records With A Blob

$id = DB::table('mylobs')->whereId(1)->updateLob(
array('name'=>'demo update blob'),
array('blobfield'=>'blob content here')
);

Note: When using the insertLob method, you can specify the auto-incrementing column name as the third parameter in insertLob function. It will default to "id" if not specified.

##Updating Blob directly using OracleEloquent On your model, just add use yajra\Oci8\Eloquent\OracleEloquent as Eloquent; and define the fields that are blob via protected $binaries = [];

Example Model:

use Yajra\Oci8\Eloquent\OracleEloquent as Eloquent;
 
class Post extends Eloquent {
 
// define binary/blob fields
protected $binaries = ['content'];
 
// define the sequence name used for incrementing
// default value would be {table}_{primaryKey}_seq if not set
protected $sequence = null;
 
}

Usage:

Route::post('save-post', function()
{
$post = new Post;
$post->title = Input::get('title');
$post->company_id = Auth::user()->company->id;
$post->slug = Str::slug(Input::get('title'));
// set binary field (content) value directly using model attribute
$post->content = Input::get('content');
$post->save();
});

Limitation: Saving multiple records with a blob field like Post::insert($posts) is not yet supported!