Laravel学习笔记—Artisan命令与数据迁移填充

laravel.jpg

衔接之前文章,继续学习,做笔记。

  1. [Laraver学习笔记—框架基本介绍][2]

  2. [Laravel学习笔记—数据库操作的三种方式][3]

Artisan命令

Artisan简介

  • Artisan是Laravel中自带的命令行工具的名称

  • 由强大的Symfony Console组件驱动

  • 提供对应用开发帮助的命令

Artisan使用

查看所有可用的Artisan所用命令

php artisan || php artisan list

查看帮助信息

php artisan help

创建控制器、模型、中间件

php artisan make:controller TestController

php artisan make:model Test

php artisan make:middleware Test

生成随机的key,

php artisan key:generate

开启维护模式和关闭维护模式(显示503)

php artisan down

php artisan up

生成路由缓存以及移除路由文件

php artisan route:cache

php artisan route:clear

laravel中用户认证

生成auth所需文件,分别会在路由、控制器、视图生成相应的文件

php artisan make:auth

数据迁移

php artisan migrate

报错:

1
2

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

原因:

这是由于Laravel 默认使用 utf8mb4 字符, 包括支持在数据库存储「 表情」 。 如果你正在运行的 MySQL release 版本低于5.7.7 或 MariaDB release版本低于10.2.2

解决

为了MySQL为它们创建索引,你可能需要手动配置迁移生成的默认字符串长度, 你可以通过调用 AppServiceProvider 中的Schema::defaultStringLength 方法来配置它

找到app\Providers\AppServiceProvider.php文件

  1. 在头部引入use Illuminate\Support\Facades\Schema;

  2. 并在boot方法里增加Schema::defaultStringLength(191);

再次执行php artisan migrtate即可成功;

数据迁移

新建表迁移文件

php artisan make:migration create_tests_table –create=test

–create 指定数据表名称

数据迁移文件增加字段示例,在迁移文件up方法中增加字段:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

    public function up()

    {

        Schema::create('student', function (Blueprint $table) {

            $table->increments('id');

            $table->string('name');

            $table->integer('age')->unsigned()->default(0);

            $table->integer('sex')->unsigned()->default(1);

            $table->integer('created_at')->default(0);

            $table->integer('updated_at')->default(0);

        });

    }

生成模型同时生成迁移文件

php artisan make:model Test -m

回滚上一次迁移

php artisan migrate:rollback

回滚所有迁移

php artisan migrate:reset

数据填充

创建一个填充文件,并完善填充文件

php artisan make:seeder StudentTableSeeder

执行单个填充文件

php artisan db:seed –class=StudentTableSeeder

批量执行填充文件

php artisan db:seed

示例1:在数据填充文件 student(database\seed\StudentTableSeeder.php)文件中增加如下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

在头部引入 use Illuminate\Support\Facades\DB;

修改run方法,增加要插入的数据内容:

    public function run()

    {

        //

        DB::table('student')->insert([

        	[

        		'name' => '小明',

        		'age'  => '18'

        	],

        	[

        		'name' => '小红',

        		'age'  => '16'

        	],

        ]);

    }

执行单个填充文件命令

php artisan db:seed –class=StudentTableSeeder

示例2:批量填充

在相同目录下打开DatabaseSeeder.php,在run方法中增加要批量填充的表名数据,如下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

    public function run()

    {

        this->call(UsersTableSeeder::class);

        this->call(StudentTableSeeder::class);

    }

执行php artisan db:seed 即可。