【发布时间】:2018-11-08 17:31:46
【问题描述】:
我在使用 Laravel 和 postgres 时遇到了这个错误:
SQLSTATE[42883]: Undefined function: 7 ERROR: function paymentrun(integer, date, double precision, text) does not exist LINE 1: SELECT paymentRun( ^ HINT: No function matches the given name and argument types. 你可能需要添加显式类型转换。(SQL: SELECT paymentRun( :buyer_id::integer, :payment_date::DATE, :paid_amount::double precision, :paydetails::text);)
我有这个功能的地方: 编辑::功能更大,但我认为不需要显示
CREATE FUNCTION "paymentRun"(buyer_id integer, payment_date DATE, paid_amount double precision, payDetails text) RETURNS VOID AS
$$
DECLARE
row_STab "SearchTable"%rowtype;
curProd "KeysForSale"%rowtype;
totalPrice double precision;
returnedPID integer;
BEGIN
我是这样调用函数的:
DB::select("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;");
DB::select('BEGIN TRANSACTION;');
$sendToSQL = '';
for($i = 0; $i<session('cart_number'); $i++)
$sendToSQL .= '(' . $cart_array[$i] . '),';
$sendToSQL = rtrim($sendToSQL,",");
$sendToSQL .= ';';
DB::select('INSERT INTO "SearchTable"(product_id) VALUES' . $sendToSQL);
//DB::select(DB::raw('SELECT paymentRun'))->where(Auth::id(), date('Y/m/d'),'PayPal', 10000, 'qualquer');
DB::select('SELECT paymentRun(
:buyer_id::integer,
:payment_date::DATE,
:paid_amount::double precision,
:paydetails::text);',
['buyer_id' => Auth::id(),
'payment_date' => date('Y/m/d'),
'paid_amount' => 10000,
'paydetails' =>'qualquer'
]);
//DB::select('DELETE FROM "SearchTable";');
DB::select('COMMIT;');
我做错了什么? 我尝试了好几次,但没有一个取得好的结果。
谢谢
【问题讨论】:
-
使用函数 CAST() 我得到了同样的错误。使用 DB::raw() 它跳过...
标签: php sql laravel postgresql