1. Go to this page and download the library: Download magslabs/laravel-storedproc library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
magslabs / laravel-storedproc example snippets
// Using the Facade (alias registered automatically)
use StoredProcedure;
$result = StoredProcedure::stored_procedure('get_user_by_id')
->stored_procedure_params([':id'])
->stored_procedure_values([1])
->execute()
->stored_procedure_result();
// Shorter aliases (same behavior)
$result = StoredProcedure::procedure('get_user_by_id')
->params([':id'])
->values([1])
->run()
->result();
use MagsLabs\LaravelStoredProc\StoredProcedure;
$result = StoredProcedure::stored_procedure('get_user_by_id')
->stored_procedure_params([':id'])
->stored_procedure_values([1])
->execute()
->stored_procedure_result();
// Throws StoredProcedureNotFoundException if missing
StoredProcedure::procedure('get_users')->assertExists();
// Returns true/false without throwing
if (StoredProcedure::procedure('get_users')->exists()) {
// ...
}
// Qualified name in the procedure itself
StoredProcedure::procedure('dbo.sp_get_users')->run()->result();
// Or set schema separately
StoredProcedure::procedure('sp_get_users')
->stored_procedure_schema('custom_schema')
->run()
->result();
// As an array
->stored_procedure_params([':id'])
->stored_procedure_values([1]);
// From a Laravel Request or FormRequest
->stored_procedure_params($request); // extracts keys and formats as placeholders
->stored_procedure_values([$request->id]);
->with_transaction()
// Define OUTPUT parameters in stored_procedure_params with OUTPUT keyword
$result = StoredProcedure::stored_procedure('sp_get_user_stats')
->stored_procedure_params([
':user_id',
'@total_users OUTPUT',
'@active_users OUTPUT',
'@message OUTPUT'
])
->stored_procedure_values([123]) // Only input values, OUTPUT params are handled automatically
->stored_procedure_output_params([
'@total_users' => 'INT',
'@active_users' => 'INT',
'@message' => 'VARCHAR(255)'
])
->execute()
->stored_procedure_result();
// Access the results
echo $result->output->total_users; // OUTPUT parameter value
echo $result->output->active_users; // OUTPUT parameter value
echo $result->output->message; // OUTPUT parameter value
echo $result->result; // Regular dataset (if any)
// Define OUT parameters in stored_procedure_params (clean syntax)
$result = StoredProcedure::stored_procedure('get_user_stats')
->stored_procedure_params([
':user_id',
'@total_users',
'@active_users',
'@message'
])
->stored_procedure_values([123]) // Only input values, OUT params are handled automatically
->stored_procedure_output_params([
'@total_users' => 'INT',
'@active_users' => 'INT',
'@message' => 'VARCHAR(255)'
])
->execute()
->stored_procedure_result();
// Access the results
echo $result->output->total_users; // OUT parameter value
echo $result->output->active_users; // OUT parameter value
echo $result->output->message; // OUT parameter value
echo $result->result; // Regular dataset (if any)
// Simple array (defaults to BIT type for SQL Server, INT for MySQL)
->stored_procedure_output_params(['@result', '@status'])
// Associative array with specific types
->stored_procedure_output_params([
'@result' => 'INT',
'@message' => 'VARCHAR(255)',
'@success' => 'BIT', // SQL Server
'@success' => 'TINYINT', // MySQL equivalent
'@created_date' => 'DATETIME'
])
// Get paginated results from a stored procedure
$users = StoredProcedure::stored_procedure('get_users_paginated')
->stored_procedure_params([':page', ':per_page'])
->stored_procedure_values([1, 15])
->execute()
->stored_procedure_result()
->paginate(15); // 15 items per page
// Use in your controller
return view('users.index', compact('users'));
// Custom pagination options
$results = $storedProcResult->paginate(
$perPage = 20, // Items per page
$page = 2, // Current page (optional)
$pageName = 'page' // Page parameter name (optional)
);
// In your Blade template
{{ $results->links() }}
use MagsLabs\LaravelStoredProc\StoredProcedure;
// Basic usage with parameters and transaction
$users = StoredProcedure::stored_procedure('get_users_by_role')
->stored_procedure_connection('mysql') // Optional
->stored_procedure_params([':role'])
->stored_procedure_values(['admin'])
->with_transaction() // Optional
->execute()
->stored_procedure_result();
// With pagination
$paginatedUsers = StoredProcedure::stored_procedure('get_users_by_role')
->stored_procedure_params([':role'])
->stored_procedure_values(['admin'])
->execute()
->stored_procedure_result()
->paginate(20); // 20 items per page
// SQL Server with OUTPUT parameters
$stats = StoredProcedure::stored_procedure('sp_get_user_statistics')
->stored_procedure_connection('sqlsrv') // SQL Server connection
->stored_procedure_params([':user_id'])
->stored_procedure_values([123])
->stored_procedure_output_params([
'@total_posts' => 'INT',
'@is_active' => 'BIT',
'@last_login' => 'DATETIME'
])
->execute()
->stored_procedure_result();
// MySQL with OUT parameters
$stats = StoredProcedure::stored_procedure('get_user_statistics')
->stored_procedure_connection('mysql') // MySQL connection
->stored_procedure_params([':user_id'])
->stored_procedure_values([123])
->stored_procedure_output_params([
'@total_posts' => 'INT',
'@is_active' => 'TINYINT',
'@last_login' => 'DATETIME'
])
->execute()
->stored_procedure_result();
// Access results
$userData = $stats->result; // Dataset as Collection
$totalPosts = $stats->output->total_posts; // OUTPUT/OUT parameter
$isActive = $stats->output->is_active; // OUTPUT/OUT parameter
$lastLogin = $stats->output->last_login; // OUTPUT/OUT parameter
// Example via dependency injection in a controller
class UserController extends Controller
{
protected StoredProcedure $storedProc;
public function __construct(StoredProcedure $storedProc)
{
$this->storedProc = $storedProc;
}
public function index(Request $request)
{
$users = $this->storedProc->stored_procedure('get_users_by_role')
->stored_procedure_connection('mysql')
->stored_procedure_params([':role'])
->stored_procedure_values([$request->role])
->with_transaction()
->execute()
->stored_procedure_result()
->paginate(15);
return view('users.index', compact('users'));
}
public function stats($userId)
{
$stats = $this->storedProc->stored_procedure('sp_get_user_statistics')
->stored_procedure_connection('sqlsrv')
->stored_procedure_params([
':user_id',
'@total_posts OUTPUT'
])
->stored_procedure_values([$userId])
->stored_procedure_output_params(['@total_posts' => 'INT'])
->execute()
->stored_procedure_result();
return response()->json([
'user_data' => $stats->result,
'total_posts' => $stats->output
]);
}
}