這也許是你期待已久的 Laravel 快速上手教程

蝸牛發表於2020-04-19

一、Laravel 框架安裝

文件:安裝《Laravel 7 中文文件》

1. 建立專案

composer create-project --prefer-dist laravel/laravel blog

2. 安裝依賴

cd blog
composer install

3. 生成環境配置

1. 修改 .env 資訊

// 1. 建立環境配置資訊
cp .env.example .env

// 2. 生成 APP_KEY
php artisan key:generate

// 3. 修改 .env 資訊與敏感資訊
# 專案
APP_NAME=Blog
APP_ENV=local
APP_DEBUG=true
APP_URL=http://blog.test

# 資料庫
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 # 這裡改成資料庫主機對應的地址
DB_PORT=3306 # 這裡改成資料庫對應的埠
DB_DATABASE=blog # 資料庫名
DB_USERNAME=username # 使用者
DB_PASSWORD=password # 密碼

# 全域性配置
BROADCAST_DRIVER=log
CACHE_DRIVER=redis
QUEUE_CONNECTION=sync
SESSION_DRIVER=redis
SESSION_LIFETIME=120

# redis 快取
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
# 預設 db、快取 db(見 config/database.php redis 部分)
REDIS_DB=0
REDIS_CACHE_DB=1

2,建立資料庫

  1. 建立名為 blog 的資料庫,指定字符集為 utf8mb4 -- UTF-8 Unicode 排序規則為 utf8mb4_bin
  2. 修改 app/AppServiceProvider.php,處理資料庫 utf8mb4 string 預設長度超過索引長度的問題
<?php
namespace App\Providers;

use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
.
.
.
class AppServiceProvider extends ServiceProvider
{
    .
    .
    .
    public function boot()
    {
        Schema::defaultStringLength(191);
        .
        .
        .
    }
    .
    .
    .
}

3. 配置 web 環境

  1. 站點配置
// 1. 安裝 nginx
apt install nginx -y

// 2. 在 nginx 的站點目錄中新增 `blog.test.conf`
cp /etc/nginx/site-available/default /etc/nginx/site-available/blog.test.conf

// 3. 修改 blog.test 站點配置
vim /etc/nginx/site-available/blog.test.conf

...
    # 配置訪問域名
    server_name blog.test;

    # 配置站點目錄
    root "/path/to/blog/public";

    # 美化 url
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # 啟用 php-fpm 配置
    ...
...

// 4. 啟用站點配置
ln -s /etc/nginx/site-available/blog.test.conf /etc/nginx/site-enable/blog.test.conf

// 5. 檢測 nginx 配置是否正確
nginx -t

// 6. 啟用站點
nginx -s reload

// 7. 更新 host 資訊
echo "blog.test" >> /etc/hosts
  1. 瀏覽器訪問站點,確認站點已正確啟用
    http://blog.test

二、建立路由

文件:路由《Laravel 7 中文文件》

  1. web 路由 routes/web.php
.
.
.
Route::get('test', function () {
    return 'this is a test route';
});
.
.
.

瀏覽器訪問 http://blog.test/test

  1. api 路由 routes/api.php
.
.
.
Route::get('test', function () {
    return 'this is an api test route';
});
.
.
.

瀏覽器訪問 http://blog.test/api/test

三、建立控制器

文件:控制器《Laravel 7 中文文件》

  1. 建立 TestController

php artisan make:controller TestController。控制器預設目錄為 app/Http/Controllers/

  1. 關聯 web 路由

修改 routes/web.php,新增路由

.
.
.
Route::get('test/controller', 'TestController@test');
.
.
.

修改 routes/api.php,新增路由

.
.
.
Route::get('test/controller', 'TestController@testApi');
.
.
.
  1. 修改控制器 app/Http/Controllers/TestController
.
.
.
class TestController extends Controller
{
    public function test()
    {
        return 'this is an web test from test controller';
    }

    public function testApi()
    {
        return response()->json([
            'message' => 'this is an api test from test controller',
        ]);
    }
}
  1. 瀏覽器訪問

web: http://blog.test/test/controller
api: http://blog.test/api/test/controller

四、建立模型

1. 資料庫遷移

文件:資料庫遷移《Laravel 7 中文文件》

遷移預設目錄為 database/migrations

  1. 新建遷移
    php artisan make:migration create_tests_table --create tests

  2. 修改遷移(修改已有資料庫的表結構)
    php artisan make:migration add_column_test_info_to_tests_table --create tests

  3. 執行遷移

2. 模型定義

文件:https://learnku.com/docs/laravel/7.x/eloquent/7499(模型約定,請注意)

模型預設目錄為 app

建立模型,並指定目錄為 app/Models/

php artisan make:model Models/Test

此時模型 Test 預設關聯到資料的 tests 表,可以修改模型屬性 $table ,關聯其它表。

3. 在控制器中使用模型

  1. 建立路由

routes/web.php

Route::get('test/model', 'TestContoller@testUsingModel');

routes/api.php

Route::get('test/model', 'TestContoller@testUsingModelInApiRoute');
  1. 新增控制器處理函式
...
class TestController extends Controller
{
    ...
    public function testUsingModel()
    {
        return Test::all();
    }

    public function testUsingModel()
    {
        return response()->json(Test::paginate());
    }
    ...
}
  1. 訪問路由

web: http://blog.test/test/model
api: http://blog.test/api/test/model

五、接收請求資料

  1. 建立路由

routes/web.php

Route::get('test/request', 'TestContoller@getRequestData');
  1. 新增控制器處理函式
...
use Illuminate\Http\Request;
...
class TestController extends Controller
{
    ...
    public function getRequestData(Request $request)
    {
        return $request->all();
    }

    public function testUsingModel()
    {
        return response()->json(Test::paginate());
    }
    ...
}
  1. 訪問路由

web: http://blog.test/test/request

  1. api 同理

尾聲

文章首發於個人部落格

如有疑問或建議,歡迎留言交流

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Study hard and make progress every day. Study hard and make progress every day.

相關文章