在公司維護的某個網站,當初因為時程的關係,寫了一些方便撈資料的 SP,之前我都是 store procedure (以下簡稱 SP) 預設放在 DB,在 MySQL workbench 操作,再匯到自己的測試 DB,不過自從用了 Laravel 的 Migration 建立 Table 之後,覺得應該要連 SP 都統一靠 Migration 一起生成,會比較順一點,否則當專案交給別人時,他可以不會知道有這隻 SP,或者是我可能會漏掉給他 SP 這件事情。
// 建立 store procedure
至於在 controller 呼叫 store procedure,可以用 DB::select :
參考文章:
Creating MYSQL Procedure in Laravel 4 Migrations
宣告 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
// 刪除 store procedure
DB::unprepared('DROP PROCEDURE IF EXISTS SP_NAME');
Schema::drop('table_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