一、Laravel 框架安裝
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,建立資料庫
- 建立名為
blog
的資料庫,指定字符集為utf8mb4 -- UTF-8 Unicode
排序規則為utf8mb4_bin
- 修改 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. 安裝 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
- 瀏覽器訪問站點,確認站點已正確啟用
http://blog.test
二、建立路由
- web 路由 routes/web.php
.
.
.
Route::get('test', function () {
return 'this is a test route';
});
.
.
.
瀏覽器訪問 http://blog.test/test
- api 路由 routes/api.php
.
.
.
Route::get('test', function () {
return 'this is an api test route';
});
.
.
.
瀏覽器訪問 http://blog.test/api/test
三、建立控制器
- 建立 TestController
php artisan make:controller TestController
。控制器預設目錄為 app/Http/Controllers/
- 關聯 web 路由
修改 routes/web.php,新增路由
.
.
.
Route::get('test/controller', 'TestController@test');
.
.
.
修改 routes/api.php,新增路由
.
.
.
Route::get('test/controller', 'TestController@testApi');
.
.
.
- 修改控制器 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',
]);
}
}
- 瀏覽器訪問
web: http://blog.test/test/controller
api: http://blog.test/api/test/controller
四、建立模型
1. 資料庫遷移
遷移預設目錄為 database/migrations
新建遷移
php artisan make:migration create_tests_table --create tests
修改遷移(修改已有資料庫的表結構)
php artisan make:migration add_column_test_info_to_tests_table --create tests
執行遷移
2. 模型定義
文件:https://learnku.com/docs/laravel/7.x/eloquent/7499(模型約定,請注意)
模型預設目錄為 app
建立模型,並指定目錄為 app/Models/
php artisan make:model Models/Test
此時模型 Test 預設關聯到資料的 tests 表,可以修改模型屬性 $table ,關聯其它表。
3. 在控制器中使用模型
- 建立路由
routes/web.php
Route::get('test/model', 'TestContoller@testUsingModel');
routes/api.php
Route::get('test/model', 'TestContoller@testUsingModelInApiRoute');
- 新增控制器處理函式
...
class TestController extends Controller
{
...
public function testUsingModel()
{
return Test::all();
}
public function testUsingModel()
{
return response()->json(Test::paginate());
}
...
}
- 訪問路由
web: http://blog.test/test/model
api: http://blog.test/api/test/model
五、接收請求資料
- 建立路由
routes/web.php
Route::get('test/request', 'TestContoller@getRequestData');
- 新增控制器處理函式
...
use Illuminate\Http\Request;
...
class TestController extends Controller
{
...
public function getRequestData(Request $request)
{
return $request->all();
}
public function testUsingModel()
{
return response()->json(Test::paginate());
}
...
}
- 訪問路由
web: http://blog.test/test/request
- api 同理
尾聲
文章首發於個人部落格
如有疑問或建議,歡迎留言交流
本作品採用《CC 協議》,轉載必須註明作者和本文連結