iT邦幫忙

0

如何使用laravel读取存储过程的数据(Stored Procedure)?

HI,想問各位大大们如何可以讀取我的stored procedure俚的data然后pass去mailable发邮件

我的 Controller Page

public function mailsend()
{
$data=DB::statement('CALL SendMailABC(?,?,?)',
array(
'1', //ID
'User 2', //User
'David' //Name
));
\Mail::to('abc@gmail.com')->send(new SendMail($data));
return 'A message has been sent to Mailtrap!';
}

我的 Mail Page

public function __construct($data)
{
$this->data=$data;
}
public function build()
{
return $this -> from('sendmail123@hotmail.com', 'Test Mail')
-> subject('mail from mee')
-> view('mails.mailview')
->with([
'Login_ID'=>$this->prm_ID, //prm_ID is from sp field
'User'=>$this->prm_User, 
'Name'=>$this->prm_Name, 
]);
}

我的 Stored Procedure

PROCEDURE SendMailABC( IN  prm_LoginID VARCHAR(80),IN prm_UserName VARCHAR(100), IN prm_ProjName VARCHAR(255))
BEGIN


SELECT
  Useremail,
  UserName,
  ProjName,
  RTNo
FROM mytable 
  Where mytable.LoginID =prm_LoginID;

END

Blade Page

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<p>Hi {{$User}},</p>


 <p>This is your Login ID {{$Login_ID}} and name {{$Name}}</p>


</body>
</html>

如何可以把我Stored Procedure所SELECT的data都放去我的blade page 呢?

2 個回答

1
暐翰
iT邦大師 1 級 ‧ 2020-07-23 10:50:26

MySQL 做不到select * from SendMailABC()也不建議,除非逼不得已情況下可以使用insert臨時表再select方式

MySql stored procedures: How to select from procedure table? - Stack Overflow

1.Stored Procedure不要做查詢用途,我個人使用時機update/insert/delete減少傳輸數據量或是要加密腳本特殊情況。
e.g :

insert into table (col1,col2,col3.....col40) values (@col1,@col2,.....@col40);

可以優化成

execute yoursp @col1,@col2...@col40

2.假如真的需要做查詢模組化,請優先考慮 view 接著考慮 function

0
浩瀚星空
iT邦超人 1 級 ‧ 2020-07-23 11:25:36

看你還在用「DB::」就了解你還不太了解orm。
或許你再去了解一下db::下一個說明文件。就可以解決你的問題了。

我要發表回答

立即登入回答