Php 如何使用参数调用Laravel5.3中的mysql存储过程

Php 如何使用参数调用Laravel5.3中的mysql存储过程,php,laravel-5,Php,Laravel 5,我已经创建了一个名为new\u user的存储过程,并对其进行了测试,在sequel pro和workbench中调用时效果良好 我现在尝试使用Laravel5.3调用存储过程。我用LaravelInsertCreate函数做了一个测试,它工作得很好,这说明我已经正确设置了LaravelORM 然后我用谷歌搜索了一下laravel网站上的文档,看到了一些stackoverflow解决方案,并尝试实现它,但似乎都不起作用。这是我到目前为止所做的尝试 php模型非常简单 <?php name

我已经创建了一个名为
new\u user
的存储过程,并对其进行了测试,在sequel pro和workbench中调用时效果良好

我现在尝试使用Laravel5.3调用存储过程。我用LaravelInsertCreate函数做了一个测试,它工作得很好,这说明我已经正确设置了LaravelORM

然后我用谷歌搜索了一下laravel网站上的文档,看到了一些stackoverflow解决方案,并尝试实现它,但似乎都不起作用。这是我到目前为止所做的尝试

php模型非常简单

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model as EloquentModel;

class Model extends EloquentModel {
   protected $table = null;
}

现在我不知道如何调用存储过程。我只是想知道我做错了什么。感谢您的帮助

您不需要模型类来调用存储过程。 只要打电话:

DB::statement('call new_user(?, ?, ?, ?)',["myemail@test.com","mypassword","myname","mysurname"]);

除了一个原始的
语句
函数外,Laravel雄辩的语言中没有任何本土的方式。但是,您可以创建自己的basemodel,它可以在您的usermodel中使用,如下所示

class MyModel extends Model {

    public static function callStoredProcedure($name, $arrayOfKeyValues) {

        $statement = '\'call $name("';  // call stored procedure by argument $name
        $arguments = implode('", "' $arrayOfKeyValues) . '")\''; // values are merged as string
        $statement .= $arguments;
        self::::statement($statement);
    }
}
并在您的用户模型中调用它:
class UserModel扩展了MyModel{

控制器中的示例:

UserModel::callStoredProcedure($stored_procedure_name, $array_of_arguments)

在您的示例中,参数没有转义,因此容易受到SQL注入的攻击。@pumbo True,但是我们不能让OP自己做一些工作吗?谢谢您的回复,我尝试了这个语句,但它不起作用。我现在明白您的意思了,我没有正确地调用它。
UserModel::callStoredProcedure($stored_procedure_name, $array_of_arguments)