欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

md-laravel的数据库迁移和填充学习记录

程序员文章站 2022-07-12 22:19:03
...

今天来学习laravel的数据库的迁移和填充,今天结合laravel的联表查询来一起学习这个技能,因为要联表查询,所以创建两个迁移文件,最经典的就是作者表个文章表,所以我们来创建create_article_table和create_author_table

1.创建迁移文件

php artisan make:migration create_article_table
php artisan make:migration create_author_table

执行后会在项目根目录下\database\migrations文件夹下就会生成
md-laravel的数据库迁移和填充学习记录
create_article_table.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateArticleTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('article', function (Blueprint $table) {
            $table->increments('id');
            $table->string('article_name')->comment('文章标题');
            $table->integer('author')->comment('作者ID');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('article');
    }
}

create_author_table.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateAuthorTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('author', function (Blueprint $table) {
            $table->increments('id');
            $table->string('author_name',20)->comment('作者名称');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('author');
    }
}

其中
up:是创建数据库的方法
down:是删除数据表的方法

2.执行迁移文件(实际上是执行up和down的方法)

如果第一次执行迁移则需要执行如下代码
改命令执行后会自动在项目数据库中创建一张名为migrations的数据库

php artisan migrate:install

migrations的数据库的作用:用于创建记录迁移文件的记录数据表(可以看作类似于SVN的版本控制机制)。

执行迁移文件的:创建数据表(up方法,需要把系统自带的两个迁移文件删除,否则迁移操作会执行迁移文件夹中所有没有被执行的迁移文件)

php artisan migrate 

上面两个是up方法的执行
Down方法执行:(回滚操作,删除数据表)

php artisan migrate:rollback

3.数据填充器(种子文件)的创建和编写

php artisan make:seeder ArticleAndAuthorTableSeeder

md-laravel的数据库迁移和填充学习记录
执行填充器
#php artisan db:seed --class=需要执行的种子文件名(不带.php)
ArticleAndAuthorTableSeeder.php

<?php

use Illuminate\Database\Seeder;

class ArticleAndAuthorTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('article')->insert([
            [
        		'article_name'	=>	'如何让皮肤变好?',
        		'author_id'		=>	rand(1,5)
        	],
        	[
        		'article_name'	=>	'雅思有必要报班吗?',
        		'author_id'		=>	rand(1,5)
        	],
        	[
        		'article_name'	=>	'女生们被关注腿是什么感受?',
        		'author_id'		=>	rand(1,5)
        	],
        	[
        		'article_name'	=>	'有真正靠炒股发家致富的例子?',
        		'author_id'		=>	rand(1,5)
        	],
        	[
        		'article_name'	=>	'当电影里的牛逼台词出现在现实生活中……',
        		'author_id'		=>	rand(1,5)
        	],
        ]);
        //作者表
        DB::table('author')->insert([
            [
        		'author_name'	=>	'木子李'
        	],
        	[
        		'author_name'	=>	'软软'
        	],
        	[
        		'author_name'	=>	'杏菜不知道啊'
        	],
        	[
        		'author_name'	=>	'麦龟迪'
        	],
        	[
        		'author_name'	=>	'郝给力'
        	],
        ]);
    }
}

写一个路由,写一个测试方法

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
class TestController extends Controller
{
    public function Test(){
       $data = DB::table('article as t1')
       ->select('t1.id','t1.article_name','t2.author_name')
       ->leftjoin('author as t2','t1.author_id','=','t2.id')
       ->get();

       dd($data);
    }
}

联表结果如下,已经成功关联两张表
md-laravel的数据库迁移和填充学习记录

相关标签: 其它