在使用 php artisan make:migration 创建migration时,可用 --path 指定创建migration文件的路径,

如果在执行的 php artisan migrate 命令,出现找不到对应class,

可以用 php artisan clear-compiled php artisan optimize 命令 移除编译过的类文件和优化,

命令详细的参数可以通过 php artisan help [command] 命令来查看。

在migration中创建表以及数据库相关的,使用到原生的sql脚本时,可以用调用DB类中的unprepared方法实现:

 <?php

 use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB; class CreateItemTempTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('item_temp', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->charset = 'utf8';
$table->collation = 'utf8_general_ci'; $table->string('o_id',50)->notNull()->comment('订单编号');
$table->string('outer_oi_id',50)->default(null)->comment('子订单号');
$table->string('sku_id')->notNull()->comment('商家SKU');
$table->string('name',100)->default(null)->comment('商品名称');
$table->decimal('amount',12,2)->default(0.00)->comment('应付金额');
$table->decimal('base_price',12,2)->default(0.00)->comment('基本价(拍下价格)');
$table->decimal('price',12,2)->default(0.00)->comment('');
$table->string('properties_value',100)->default(null)->comment('属性');
$table->integer('qty')->default(0)->comment('购买数量');
$table->string('raw_so_id',50)->default(null)->comment('');
$table->string('refund_id',50)->default(null)->comment('退货ID');
$table->integer('refund_qty')->default(0)->comment('退货数量');
$table->string('refund_status',40)->default(null)->comment('退货状态');
$table->string('shop_sku_id')->default(null)->comment('网站对应的自定义SKU编号'); }); DB::unprepared('
CREATE TRIGGER `sync_to_item_table`
BEFORE INSERT
ON `item_temp` FOR EACH ROW
BEGIN
IF NOT EXISTS(SELECT id FROM `item` WHERE o_id = new.o_id AND sku_id = new.sku_id ) THEN
INSERT INTO `item`(o_id,outer_oi_id,sku_id,name,amount,base_price,price,properties_value,qty,raw_so_id,refund_id,refund_qty,refund_status,shop_sku_id)
VALUES(new.o_id,new.outer_oi_id,new.sku_id,new.name,new.amount,new.base_price,new.price,new.properties_value,new.qty,new.raw_so_id,new.refund_id,new.refund_qty,new.refund_status,new.shop_sku_id);
ELSE
UPDATE `item` SET
outer_oi_id = new.outer_oi_id,
name = new.name,
amount = new.amount,
base_price = new.base_price,
price = new.price,
properties_value = new.properties_value,
qty = new.qty,
raw_so_id = new.raw_so_id,
refund_id = new.refund_id,
refund_qty = new.refund_qty,
refund_status = new.refund_status,
shop_sku_id = new.shop_sku_id
WHERE o_id = new.o_id AND sku_id = new.sku_id;
END IF;
END
'); DB::unprepared('
CREATE EVENT IF NOT EXISTS `clear_item_temp`
ON SCHEDULE
EVERY 1 DAY
DO TRUNCATE `item_temp`
');
} /**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('item_temp');
DB::unprepared('DROP TRIGGER IF EXISTS `sync_to_item_table`');
DB::unprepared('DROP EVENT IF EXISTS `clear_item_temp`'); }
}

Laravel使用笔记 —— migration的更多相关文章

  1. Laravel学习笔记(三)--在CentOS上配置Laravel

    在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚.     今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下.     1)系统 ...

  2. Laravel学习笔记之Session源码解析(上)

    说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...

  3. Laravel学习笔记之PHP反射(Reflection) (上)

    Laravel学习笔记之PHP反射(Reflection) (上) laravel php reflect 2.1k 次阅读  ·  读完需要 80 分钟 3 说明:Laravel中经常使用PHP的反 ...

  4. laravel安装 笔记

    http://laod.cn/hosts/2015-google-hosts.html 谷歌FQIP laravel安装和设置流程 1安装composer , VirtualBox和Vagrant 下 ...

  5. Laravel学习笔记(四)数据库 数据库迁移案例

    创建迁移 首先,让我们创建一个MySql数据库“Laravel_db”.接下来打开app/config目录下的database.php文件.请确保default键值是mysql: return arr ...

  6. Laravel学习笔记(三)数据库 数据库迁移

    该章节内容翻译自<Database Migration using Laravel>,一切版权为原作者. 原作者:Stable Host, LLC 翻译作者:Bowen Huang 正文: ...

  7. Laravel学习笔记(六)数据库 数据库填充

    数据库驱动的应用程序往往需要预先填充数据到数据库,以便进行测试和演示. 什么是种子数据 种子数据就是必须要加载了应用程序才能正常运行的数据.大多数应用程序需要在开发.测试和生产中加载一些参考数据. 一 ...

  8. 慕客网laravel学习笔记

    session中set方法使用 Session::set('user.username.age','18')嵌套使用得出$user = ['username'=>['age'=>18]]; ...

  9. laravel整理笔记(一)

    安装laravel5.8.3需要的环境 PHP >= 7.1.3 PHP OpenSSL 扩展 PHP PDO 扩展 PHP Mbstring 扩展 PHP Tokenizer 扩展 PHP X ...

随机推荐

  1. 3d转换-正方体-Html5Css3-遁地龙卷风

    (-1) 写在前面 我用的是chrome49,这个案例是从网上看到的,向这位同行致敬,建议大家在记录自己学习感悟时,向我一样加上笔名,被转载的时候还能留下点东西. 在研究slice-box.js的时候 ...

  2. 响应式web设计总结

    简单来说响应式是针对不同的屏幕的大小,比如电脑电脑.Pad设备上,屏幕比较宽的,就可以一行放多个Div.到了手机上,或者Pad竖着拿的的时候,一行就只放1到2个Div就差不多了.这样在移动设备上,无论 ...

  3. js array push 添加内容

    向数组中天机内容: var array = new Array(); array.push('newItem');

  4. C++中的vector 用法解析

         一.概述     vector 是C++标准模板库的部分内容,他是一个多功能的,能够操作多种 数据结构和算法 的模板类和函数库.     vector 是一个容器,它能够存放各种类型的对象, ...

  5. 《PHP中的Math函数》笔记

    ① abs() 绝对值; ② ceil() 向上取整; ③ floor() 向下取整; ④ fmod() 返回除法的浮点数余数; ⑤ getrandmax() 显示随机数最大的可能值; ⑥ is_fi ...

  6. html5 canvas-绘制贝塞尔曲线

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. C语言 完美字符串

    约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写.(也就是说字母F和f)的完美度相同. ...

  8. How to Fix GNOME License Not Accepted Issue on CentOS 7

    This post assume that you have just finished the Gnome GUI installation on CentOS 7 by using “yum gr ...

  9. java文件下载和导出文件名乱码浏览器兼容性问题

    实例: String poorName= dataMap.get("NAME").toString(); String villageName = dataMap.get(&quo ...

  10. POJ 2299 Ultra-QuickSort 线段树

    题目链接 题意:求冒泡排序的交换次数,即求逆序数,即求对于每个数前面有多少个数比他大,n < 500,000,0 ≤ a[i] ≤ 999,999,999. 题解:因为值较大,个数较少,所以我们 ...