我们新建一个 mysql 数据库,charset
和 collation
遵循 config/database.php
文件里的 mysql
配置选择 utf8mb4
,utf8mb4_unicode_ci
。mysql
5.7 以后表基本上都选择 InnoDB
类型,数据库名,用户名,密码自己随意填写。
数据库创建完成后我们编辑 .env
文件,填入对应配置。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=数据库名
DB_USERNAME=用户名
DB_PASSWORD=密码
接下来建一张名字叫 post
文章表,我们无需手动去建,依然是通过命令行来创建。
php artisan make:model Post -c -m
我们创建 model
文件时顺便创建 controller
,migartion
文件,省时又规范。model
称之为模型,用来查询数据表时使用, 注意开头大写,而且不用复数单词。
我们使用 migartion
文件来创建编辑数据表。添加两个字段先试试手,文件在 blog/database/migrations
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title')->comment('标题');
$table->string('content')->comment('内容');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
文件编辑保存好后,再命令行输入
php artisan migrate
即可建表完成,会有其他表被同时创建,先不用管。migration
的内容同学自行学习,文档多过几遍,需要用到时,直接翻文档就行。
我们来 IndexController
中测试一下数据创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作,简称 curd
。
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function index()
{
Post::create([
'title' => '今天周三',
'content' => '天气晴,还没到周五,心情有点down',
]);
$time = '今天周三';
return view('welcome', compact('time'));
}
}
访问首页执行代码,会出现报错信息。
Add [title] to fillable property to allow mass assignment on [App\Post].
E5332E7C-C5D4-4441-85B7-9A7E741B398F.png
这里在 Post.php
文件中加入
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
重新访问,在通过数据库工具看看,表里应该会有数据了。
这里有两个字段 created_at
和 updated_at
被自动赋值了,也是 model
提供的功能。
但是时间不对,我们需要去 config/app.php
中找到 timezone
,UTC
改为 PRC
。
如果使用 DB::table('posts')::create
则不会有该功能,许多方法,返回数据类型也是不同。何时使用 model
,db
就根据需求来。
除了创建,更新,删除,自行学习。我们现在查询数据,展示到首页去。
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function index()
{
$data = Post::all();
return view('welcome', compact('data'));
}
}
welcome.blad.php
,数据可以自己加几条。
@extends('app')
@section('title', '首页')
@section('content')
<div class="container">
<div class="row">
@foreach($data as $v)
<div class="col-12">
<h1 class="my-5">{{ $v->title }}</h1>
<p>{{ $v->content }}</p>
</div>
@endforeach
</div>
</div>
@endsection
98E7AFA7-E1FD-41A1-98FA-167CDB34DCD8.png
之后的网站功能,基本上就是增删改查,当你做多了就会发现,其实大家网站所有功能就是这样,归纳总结的能力需要同学自己锻炼出来。
网友评论