【メモ】Laravel8 について
このページまでお越しいただきありがとうございます。
##はじめに
Laravel8の学習記録です。
この記事は以下のことを記録として残しております。
・Laravel8 Sailの環境構築
・投稿の取得、作成、編集、削除のAPI作成
##Laravel8 sailの環境構築
①Docker Desktopをダウンロードする
ダウンロードはこちら
②以下コマンドを実行してLaravel8の環境構築します。
$ curl -s "https://laravel.build/example-app?with=mysql,mailhog" | bash
※example-appの部分は好きなアプリ名に変更します。(この記事ではexample-appにしています)
③アプリケーションディレクトリに移動してLaravel Sailを起動するために以下のコマンドを実行
$ cd example-app && ./vendor/bin/sail up
※example-appの部分は③のコマンドで設定したアプリ名を入力してください。
起動後に"http://localhost/" にアクセスすると初期画面に行くか確認してください。
参考記事
公式ドキュメント
##投稿の取得、作成、編集、削除のAPI作成
###マイグレーションファイルを作成して、データベースにpostsテーブルを生成する
マイグレーションについて
アプリケーションディレクトリで以下コマンドを実行してマイグレーションファイルを作成します。
./vendor/bin/sail artisan make:migrataion create_posts_table
作成さいれたマイグレーションファイルに以下コードを記述します。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('content');
$table->string('title');
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
migrateを実行してデータベースにpostsテーブルを作成します。
./vendor/bin/sail artisan migrate
####postsテーブルができているかの確認方法
アプリケーションディレクトリからmysqlに入ります。
./vendor/bin/sail exec mysql mysql -u root -p
パスワードを求められたら、.envファイルに記述のパスワードを入力します。
$ use <データベース名>;
$ show tables;
+------------------------+
| Tables_in_example_app |
+------------------------+
| failed_jobs |
| migrations |
| password_resets |
| personal_access_tokens |
| posts |
| users |
+------------------------+
postsテーブルがあることが確認できました。
###モデルを作成する
以下コマンドを実行してPostモデルを作成します。
./vendor/bin/sail artisan make:model Post
モデルファイルを開いて以下コードを記述します。※今回は論理削除のみ設定
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use HasFactory;
use SoftDeletes;
}
###コントローラーを作成
以下コマンドを実行してPostControllerを作成します。
./vendor/bin/sail artisan make:controller PostController
コントローラーには以下のコードを記述をします。
※今回は処理ができることを第一の目的にしているためfatControllerになっているかと思いますが、ご容赦ください。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
class PostController extends Controller
{
public function index() {
$posts = Post::all();
return response()->json($posts);
}
public function store(Request $request) {
if (empty($request->input('title')) || empty($request->input('content')) || mb_strlen($request->input('title')) >= 100 || mb_strlen($request->input('content')) >= 100) {
return '失敗';
}
$post = new Post();
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
return response()->json($post);
}
public function edit(Request $request) {
if (!Post::where('id', $request->input('id'))->exists() || empty($request->input('title')) || empty($request->input('content')) || mb_strlen($request->input('title')) >= 100 || mb_strlen($request->input('content')) >= 100 ){
return '失敗';
}
$post = Post::find($request->input('id'));
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
return response()->json($post);
}
public function delete(Request $request) {
if (!Post::where('id', $request->input('id'))->exists()){
return '失敗';
}
$post = Post::where('id', $request->input('id'))->delete();
return '成功';
}
}
###api.phpに記述する
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::get('/index', [PostController::class, 'index']);
Route::post('/store', [PostController::class, 'store']);
Route::post('/edit', [PostController::class, 'edit']);
Route::get('/delete', [PostController::class, 'delete']);
####動作確認方法
postmanを使用して動作確認しました。
postmanダウンロード
無事データを取得出来ていることが確認できます。
###コンテナを停止します。
最後はコンテナを停止しましょう。
./vendor/bin/sail down
以上で記録を終了いたします。
最後まで読んでいただきありがとうございました。
※毎回./vendor/bin/sail を打つのがめんどくさい場合はaliasの設定をしておくとコマンドを打つのが楽になります。
Author And Source
この問題について(【メモ】Laravel8 について), 我々は、より多くの情報をここで見つけました https://qiita.com/yagiryu/items/d790202753e8955a47c7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .