gpt4 book ai didi

php - 如何在 laravel 中使用模型调用参数化存储过程

转载 作者:行者123 更新时间:2023-11-29 06:36:48 25 4
gpt4 key购买 nike

我在 mysql 中创建了一个名为“Insertusers”的存储过程,其中包含 8 个参数。

现在我想使用我的模型调用此过程并使用此过程在表中插入值。

这是我模型的代码:

<?php
class Insertuser extends Eloquent {
protected $guarded = array();

public static function storedProcedureCall() {
return DB::statement('Insertusers');
}
public static $rules = array();
}
?>

这是我的 Controller 代码:

public function createUser() {
$clan = new Insertuser;
$clan->clanname = Input::get('clanname');
$clan->description = Input::get('tbx_new_clan_Des');
if (Input::get('chk_new_clan_Status')) {
$clan->active = true;
} else {
$clan->active = false;
}
if (Input::get('chk_new_clan_Incoming')) {
$clan->allow_incoming = true;
} else {
$clan->allow_incoming = false;
}
if (Input::get('chk_new_clan_key')) {
$clan->clan_key = Input::get('tbx_new_clan_key');
}
$clan->created_by = Session::get('userid');
$clan->last_updated_by = Session::get('userid');
$clan->DOMType=1;
$clan->save();

}

当我尝试创建用户时,出现以下错误:

SQLSTATE[42S02]: 未找到基表或 View 。

请帮帮我。谢谢。

最佳答案

MSSQL 要求声明过程中的变量,人们使用 @Variable 语法 (DECLARE @TEXT VARCHAR(25) = 'text')。此外,MS 允许在过程的任何 block 内进行声明,这与 mySQL 不同,后者需要在顶部进行所有 DECLARE。

虽然在命令行上很好,但我觉得在 mySQL 的存储过程中使用“set = @variable”是有风险的。没有作用域,变量存在于作用域边界之外。这类似于 JavaScript 中没有“var”前缀声明的变量,它们是全局命名空间并会产生意外的冲突和覆盖。

我希望 mySQL 的优秀人员将允许在存储过程中的各个 block 级别上使用 DECLARE @Variable。注意@(符号)。 @ 符号前缀有助于将变量名称与表列名称分开 - 因为它们通常是相同的。当然,总是可以添加“v”或“l_”前缀,但 @ 符号是一种方便而简洁的方式,可以让变量名称与您可能从中提取数据的列相匹配,而不会破坏它。

MySQL 是存储过程的新手,他们的第一个版本做得很好。很高兴看到他们在这里采取它的形式,并看到语言的服务器端方面成熟。

关于php - 如何在 laravel 中使用模型调用参数化存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24080419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com