在使用 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. Maven模块聚合

    一个Maven工程中一般会有很多模块组成,为了构建的方便通常想一次构建多个模块,Maven聚合这一特性就是为该需求服务的. 假设我们有account-email和account-persist两个模块 ...

  2. 【转】PHP网站(nginx、php-fpm、mysql) 用户权限解析

    这篇文章我们就特别来讲解下,nginx.php-fpm 以及 mysql 运行在各个用户下的配置. 先来做个说明:nginx本身不能处理PHP,它只是个web服务器.当接收到客户端请求后,如果是php ...

  3. JS判断是不是手机浏览器浏览网站的网页,并自动跳转

    现在智能手机上网越来越普遍了,为了获得用户体验增加网站流量,你有必要为你的网站增加一个访问端设备的判断功能,若发现是手机用户访问,则直接跳转到手机站,通过百度的APP site,很容易就可实现这功能. ...

  4. PhotoSwipe插件的使用

    1.首先引入插件 <link rel="stylesheet" href="css/photoswipe.css"> <link rel=&q ...

  5. Cordova环境搭建 & HelloWorld

    目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Cordova就是一个中间件,让我们把WebAPP打包成Hybrid ...

  6. Nodejs 饭店

     一个Node.js饭店的发展历程 前面的一堆理论似乎不太好明白,最后讲一个关于饭店发展历程的故事作为结尾吧.     第一年 饭店开张,只有一个厨师(同时还兼任老板.服务员.打荷.收银员),当一个客 ...

  7. 自定义TextView 调用ttf格式字体

    自定义TextView 调用ttf格式字体 1.<strong>将ttf格式文件存放在assets/fonts/下</strong> 注:PC系统字体存放在C:\Windows ...

  8. 基于netty轻量的高性能分布式RPC服务框架forest<上篇>

    工作几年,用过不不少RPC框架,也算是读过一些RPC源码.之前也撸过几次RPC框架,但是不断的被自己否定,最近终于又撸了一个,希望能够不断迭代出自己喜欢的样子. 顺便也记录一下撸RPC的过程,一来作为 ...

  9. struts2笔记(2)

    <context-param> <param-name>pattern</param-name> <param-value>yyyy-MM-dd hh: ...

  10. python升级

    一开始有这个需求,是因为用 YaH3C 替代 iNode 进行校园网认证时,一直编译错误,提示找不到 Python 的某个模块,百度了一下,此模块是在 Python2.7 以上才有的,但是系统的自带的 ...