您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
数据库之填充
发布时间:2019-09-22 10:34:15编辑:雪饮阅读()
建立测试数据的两种套路
套路1
创建注入器
D:\7n\blog>php artisan make:seeder testSeeder
Seeder created successfully.
然后在项目的database/seeds目录下会生成一个testSeeder的php文件,打开后将其中的run方法修改如:
public function run()
{
$arr=[];
for($i=0;$i<20;$i++){
$tmp=[];
$tmp['username']=str_random(20);
$tmp['password']=str_random(20);
$tmp['group_id']=rand(1,10);
$tmp['email']=rand(100000,99999).'@qq.com';
$tmp['sex']=rand(0,1);
$tmp['age']=rand(10,60);
$arr[]=$tmp;
}
DB::table('test')->insert($arr);
}
运行注入器
回到之前的命令行中运行命令如:
D:\7n\blog>php artisan db:seed --class=testSeeder
则运行结束后,数据库中test表中就被创建了一些测试数据
套路2
创建migration
D:\7n\blog>php artisan make:migration Post
同样的我们找到刚创建的migration,位于database/migrations中,找到后修改其up和down方法如:
public function up()
{
Schema::create('posts',function(Blueprint $table){
$table->increments('id');
$table->string('title')->comment('文章标题');
$table->text('content')->comment('文章的内容');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('posts');
}
运行migrations
D:\7n\blog>php artisan migrate
执行结束后就会快速创建了一张名为posts的表
创建seeder
D:\7n\blog>php artisan make:seeder PostSeeder
Seeder created successfully.
则和套路1一样,这里也将创建的seeder的run方法修改如:
public function run()
{
$data=[];
for($i=0;$i<30;$i++){
$tmp=[];
$tmp['title']=str_random(20);
$tmp['content']=str_random(100);
$tmp['created_at']=date('Y-m-d H:i:s');
$tmp['updated_at']=date('Y-m-d H:i:s');
$data[]=$tmp;
}
DB::table('posts')->insert($data);
}
然后在database/seeds/DatabaseSeeder.php中将run方法修改如:
public function run()
{
Model::unguard();
$this->call(PostSeeder::class);
Model::reguard();
}
再次回到命令行执行如:
D:\7n\blog>php artisan db:seed
则此时posts表中也被填充了一些测试数据
载入自定义php
这里有一个需求,我要载入一个php文件,该文件中包含若干方法
该文件我在项目中app中建立一个Common文件夹并在其中建立function.php如:
<?php
if(!function_exists('love')){
function love(){
echo 'i love you dmj';
}
}
?>
然后我们要在项目根目录中的composer.json中的autoload中配置如:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files":[
"app/Common/function.php"
]
},
然后回到命令行中执行命令如:
D:\7n\blog>composer dump-auto
Generating autoload filesCarbon 1 is deprecated, see how to migrate to Carbon 2.
https://carbon.nesbot.com/docs/#api-carbon-2
You can run ".\vendor\bin\upgrade-carbon" to get help in updating carbon and other frameworks and libraries that depend on it.
Generated autoload files containing 520 classes
然后在随便找一个控制器中即可调用上面的自定义方法了,如:
public function getShouye(){
love();
}
安装Debugbar调试工具
laravel也可以和tp一样有类似页面trace的调试工具,只是laravel的叫做Debugbar
在命令行运行命令如:
D:\7n\blog>composer require barryvdh/laravel-debugbar
注意:该命令和安装laravel时一样,是去外网获取数据资源的,所以会比较慢,耐心等待。
命令执行完毕后在config/app.php中的"Application Service Providers"段中添加一个类如:
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Barryvdh\Debugbar\ServiceProvider::class,
此时随便找一个控制器然后访问就会发现页面上多了调试工具,用法和tp的页面trace类同
模型
创建模型
D:\7n\blog>php artisan make:model Post
Model created successfully.
则建立的模型路径在app直接下级中
创建模型(自动创建迁移)
D:\7n\blog>php artisan make:mode Goods -m
Model created successfully.
Created Migration: 2019_09_22_014746_create_goods_table
同样的,模型路径在app下,但多了迁移文件,迁移文件在database/migrations下
创建模型(放在app/Model目录)
D:\7n\blog>php artisan make:model Model/Test
Model created successfully.
模型配置
表名
默认未强制指定模型表名,则模型表名和模型类名有如下关系
类名:表名
Order =>orders
Goods=>goods
country=>countries
模型配置
一个简单的配置如:
class Test extends Model
{
public $table='posts';
public $primaryKey='id';
//关闭模型自带的时间戳
/*
若不关闭,比如你新增数据的时候没有填写created_at和updated_at字段值时会被系统自动填充
*/
public $timestamps=false;
}
模型使用-增
public function getShouye(){
$test=new \App\Test;
$test->title='人快意迎风满袖';
$test->content='落花跌碎在心田';
$test->created_at=date('Y-m-d H:i:s');
$test->updated_at=date('Y-m-d H:i:s');
$test->save();
}
模型使用-查(单条)
$info=\App\Test::find(5);
var_dump($info);
模型使用-查询并删除
$info=\App\Test::find(5);
$info->delete();
模型使用-查询并修改
$info=\App\Test::find(6);
$info->title='纵横在千年间,轮回转';
$info->content='今生缘,来世再续';
$info->save();
模型使用-get及dd调试函数(dd和var_dump差不多)
$data=\App\Test::get();
dd($data);
模型使用-综合
$data=\App\Test::OrderBy('id','desc')->where('id','>',2)->get();
dd($data);
关键字词:数据库,laravel,填充
上一篇:数据库迁移
下一篇:数据库之Eloquent ORM