在使用 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. Google的Protobuf协议分析

    protobuf和thrift类似,也是一个序列化的协议实现,简称PB(下文出现的PB代表protobuf). Github:https://github.com/google/protobuf 上图 ...

  2. java基础 绘图技术.坦克大战 之java绘图坐标体系(二)

    功能:在坐标系上绘制坦克 /* * 功能:坦克游戏的1.0 * 1. 画出坦克 * */ package com.tank; import javax.swing.*; import java.awt ...

  3. 变量声明---let,const,解构

    let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止对一个变量再次赋值. 块作用域 当用let声明一个变量,它使用的是 ...

  4. 【转】 Android WebView内容宽度自适应

    我们平常在项目中有可能会遇到网页的内容是通过json数据传递到app上面用WebView来显示的,这时候我们通常都要调整内容的总宽度不超过父容器的宽度,这样子用户可以不用左右滑动就可以看到全部的内容. ...

  5. 在Ubuntu 14.04安装和使用Docker

    Docker是一个开源软件,它可以把一个Linux应用和它所依赖的一切(比如配置文件)都封装到一个容器.然而,Docker与虚拟机不同,它使用了沙箱机制,Docker容器不运行操作系统,它共享主机上的 ...

  6. 【http】四种常见的 POST 提交数据方式

    来源:http://www.cnblogs.com/aaronjs/p/4165049.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...

  7. 解决UC浏览器或微信浏览器上flex兼容问题

    在UC浏览器上使用display:flex;时会不起作用,要加上兼容性写法,如下 display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ disp ...

  8. Ruby混合类型

    当一个类拥有可以从多个父类继承的特点,类应该显示多重继承. Ruby没有直接支持多继承,但Ruby模块有另一个精彩使用.他们几乎消除多重继承的需要,提供了一个工厂,称为混入. 混合类型给一个精彩的控制 ...

  9. gdb调试

    ·代码(实验楼中的代码,改了部分数值)命名为test.c int g(int x) { return x + 7; } int f(int x) { return g(x); } int main(v ...

  10. 解决VMware虚拟机宿主机与虚拟机通讯慢

    本地连接--> 属性 --> 配置(C) -->高级 页面的属性框中找到"Large Send Offload"(中文名称叫:大量传送减负)==>Disab ...