2015年3月20日 星期五

Laravel migration 建立 store procedure

在公司維護的某個網站,當初因為時程的關係,寫了一些方便撈資料的 SP,之前我都是 store procedure (以下簡稱 SP) 預設放在 DB,在 MySQL workbench 操作,再匯到自己的測試 DB,不過自從用了 Laravel 的 Migration 建立 Table 之後,覺得應該要連 SP 都統一靠 Migration 一起生成,會比較順一點,否則當專案交給別人時,他可以不會知道有這隻 SP,或者是我可能會漏掉給他 SP  這件事情。


宣告 SP 是靠 DB:unprepared(),你可以寫在 Up 的 function 裡面。
拔掉 SP 也是 DB:unprepared(),你可以寫在 down 的 function 裡面。
e.g :
public function up()
{
    Schema::create('tablename', function(xxx){
      //bla~bla~bla~bla~
   });
   
   // 建立 store procedure
   DB::unprepared('DROP PROCEDURE IF EXISTS ls_xx; .    BEGIN... END');
}


public function down()

   // 刪除 store procedure
   DB::unprepared('DROP PROCEDURE IF EXISTS  SP_NAME'); 
   Schema::drop('table_name');
}



至於在 controller 呼叫 store  procedure,可以用 DB::select :
$users = DB::select('CALL SP_GetUser(?)', array( $uid) );


參考文章:
Creating MYSQL Procedure in Laravel 4 Migrations

沒有留言:

張貼留言

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...