文档中没有提到如何使用Eloquent语法在laravel中调用MYSQL中的存储过程的标准过程。
我的意思是有任何方法可以借助像
这样的雄辩语法来调用mysql中的存储过程$result = StoredProcedures::my_custom_procedure(param1, param2);
return view('welcome')->with('result',$result);
有没有办法用纯粹雄辩的语法(纯粹雄辩的方式)从存储过程中调用和获取结果。
感谢。非常鼓励小例子。
答案 0 :(得分:2)
您无法使用eloquent调用存储过程。但是,您可以使用以下样式的查询构建器方法。
首先在控制器文件或要调用存储过程的文件中导入以下命名空间。
use Illuminate\Support\Facades\DB;
use Doctrine\DBAL\Driver\PDOConnection;
然后你可以调用下面的存储过程,
$queryResult = $db->prepare('call searchAttendance(?,?,?,?,?)');
$queryResult->bindParam(1, $start_date);
$queryResult->bindParam(2, $end_date);
$queryResult->bindParam(3, $nurseRoles,PDOConnection::PARAM_STR);
$queryResult->bindParam(4, $leaveTypesDayOffIds,PDOConnection::PARAM_STR);
$queryResult->bindParam(5, $leaveTypesVactionIds,PDOConnection::PARAM_STR);
$queryResult->execute();
$results = $queryResult->fetchAll(PDOConnection::FETCH_ASSOC);
$queryResult->closeCursor();
return $results;
参考:Click here
答案 1 :(得分:0)
没有Facade
,因为一个简单的解决方案是使用原始SQL
查询
$result = DB::select('my_custom_procedure(?, ?)', [1,2]);
答案 2 :(得分:0)
正如大家所提到的,你不能用Eloquent语法在Laravel中调用存储过程。 You can transfer the result of your query to a collection将为您提供所有收集功能。
$queryResult = DB::select('call my_custom_procedure(?, ?)', [1,2]);
$result = collect($queryResult);
return view('welcome')->with('result',$result);