-- 文章仅供个人学习参考,如有不恰当的地方,希望前辈们指教。--
1、使用命令 创建数据库文件
php artisan make:model --migration Model/Posts
php artisan make:model --migration Model/Users
class CreatePostsTable extends Migration
{
public function up() {
Schema::create('posts', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('uid'); // 是否含有附件
$table->string('slug')->unique();
$table->string('title')->null();
$table->string('subject')->default('');
$table->string('keywords')->default('');
$table->integer('catalogue')->default(0);
$table->integer('attach')->default(0); // 是否含有附件
$table->timestamps();
$table->timestamp('published_at')->index(); //正式发布时间
});
}
}
php artisan migrate
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class Posts extends Model {
protected $datas = ['published_at'];
//自动设置slug属性
function setTitleAttribute($title) {
$this->attributes['title'] = $title;
if (!$this->exists) {
$this->attributes['slug'] = str_slug($title);
}
}
}
添加如下代码到 database/factories 目录下的 ModelFactory.php 文件中:
$factory->define(App\Model\Users::class, function (Faker\Generator $faker) {
$admin=DB::table('users')->where('name','admin')->exists();
if(!$admin){
$create_at=$faker->dateTimeBetween('-1 month','+3 days');
return [
'name' => 'admin',
'email' => 'admin@gmail.com',
'password' => bcrypt('admin'),
'created_at'=> $create_at,
'updated_at'=> $create_at,
];
}
});
$factory->define(App\Model\Posts::class, function (Faker\Generator $faker) {
$admin=DB::table('users')->where('name','admin')->first();
if($admin){
$id=$admin->id;
$published_at=$faker->dateTimeBetween('-1 month','+3 days');
$create_at=$faker->dateTimeBetween('-1 month',$published_at);
return [
'title' => $faker->sentence(mt_rand(3,10)),
'uid' => $id,
'catalogue'=>1,
'subject' => join('\n\n',$faker->paragraphs(mt_rand(3,6))),
'created_at'=> $create_at,
'updated_at'=> $create_at,
'published_at' => $published_at
];
}else{
return [];
}
});
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder
{ /**
* Run the database seeds.
*/
public function run()
{
Model::unguard();
$this->call(UserTableSeeder::class);
$this->call(PostsTableSeeder::class);
Model::reguard();
}
}
class PostsTableSeeder extends Seeder
{
public function run(){
App\Model\Posts::truncate();
factory(App\Model\Posts::class,10)->create();
}
}
class UsersTableSeeder extends Seeder
{
public function run(){
App\Model\Users::truncate();
factory(App\Model\Users::class)->create();
}
}
composer dumpautoload
php artisan db:seed // 执行所有
php artisan db:seed --class=UsersTableSeeder // 单独执行一个
也可以使用 php artisan tinker 创建admin账户
[ciara@localhost blogtest]$ php artisan tinker
Psy Shell v0.7.2 (PHP 7.0.9 — cli) by Justin Hileman
>>> $user=new App\Model\Users;
=> App\Model\Users {#676}
>>> $user->name='admin'
=> "admin"
>>> $user->email='admin@qq.com'
=> "admin@qq.com"
>>> $user->password=bcrypt('111111');
=> "$2y$10$OtwSSCXeakwPjMwELHiOg.Lti3MG0HppGP.HislQjJ5A.QxfuRm2e"
>>> $user->save();
=> true
>>> exit;
Exit: Goodbye.
参考教程:http://laravelacademy.org/tutorials/blog
GitHub: https://github.com/CiaraLi/blogtest