![]()
WARNING You're browsing the documentation for an old version of LARAVEL-OCI8. Consider upgrading your project to laravel-oci8 12.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!