20211130のPHPに関する記事は4件です。

コマンド上でphpコマンドを実行できるようにする(Windows)

PHPのPATHを設定する PATHとは PATHとは、コマンドを実行したときに読み込まれるファイル階層の設定です。 本来、プログラムをコマンドで実行する場合は、そのプログラムの保存場所を含めて書く必要があります。今回設定するXAMPPのPHP(C:xampp/php)を使用する場合は C:xampp/php (続けて、実行内容やオプションなど) と入力する必要があります。 これをWindowsの場合は、『システム環境変数』というWindows側で把握しているコマンドのブックマークに登録し、プログラム名だけで実行できるように設定することができます。(登録することをPATHを通すと言います。) php (続けて、実行内容やオプションなど) すると上記のように「php」コマンドをと入力したときに、「C:xampp/php」のプログラムファイルにアクセスし実行できるようになります。 解説で使用するphpファイルについて 本ページではXAMPPのPHPを使用してセットアップします。別階層にphpファイルをダウンロードされた方は、『環境変数名の編集』画面で、登録するPATHをそのphpファイルに設定してください。 XAMPPのインストールについては、方法を別ページに設けてあります。 詳しくはそちらをご覧ください。 XAMPPでローカルDB開発環境(構築編1) https://qiita.com/HRI-DAWN/items/807658e8ef2e96e23c92 PATHを設定する デスクトップ左下にあるスタートメニューをクリックし、「コントロールパネル」を開きます。 「コントロールパネル」が表示されたら「システムとセキュリティ」をクリックし、次の画面で「システム」を開きます。「システム」画面が表示されましたら左側メニューの中の「システムの詳細設定」をクリックして下さい。 「システムのプロパティ」画面が表示されます。「環境変数」をクリックして下さい。 「環境変数」の画面が表示されます。この画面でPATHの設定を行います。システム環境変数の中で「変数」が「PATH」と書かれたものがあるかどうかを探します。見つかった場合には「PATH」と書かれた箇所を一度クリックして選択してから「編集」ボタンをクリックして下さい。 「環境変数名の編集」画面が表示されます。右上の「新規」をクリックすると左側の一覧の最後に新しい項目を追加できるようになります。 今回は、XAMPPのphpにPATHを通しましょう。(別のphpを使用する際は、そのphp.exeファイルのPATHを確認してください)XAMPPのPHPのPATHを確認します。 『Cドライブ/xampp/php』を開いて、『php.exe』のファイルを確認します。 『php.exe』を右クリックして『プロパティ』を開きます。 『場所』をコピーしましょう。 コピーしたPATHを『環境変数名の編集』の『新規』で新たにPATHを設定します。 XAMPPのPHPのPATHを追加します。 これでphpコマンドを実行した際に、使用されるPHPへのPATH設定が完了しました。 『OK』をクリックして全てのウインドウを閉じて、最後にコマンドラインツールを使用してphpコマンドを実行して、設定できているか確認してみましょう。(既にコマンドラインツールを開いている方は、一度コマンドラインツールを再起動して変更したPATH設定を反映させましょう。) バージョンが表示されたらPHPのPATHが通っている状態ですので、これでphpコマンドを使用することができるようになりました。ヽ(´▽`)/ また『which php』というコマンドで、使用しているphpファイルへのPATHを表示することもできます。 まとめ コマンドでプログラムを実行する際は、使用するプログラムファイルまでのPATHを入力する必要がある 環境変数にPATHを登録する(PATHを通す)ことで、入力を短縮できる
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHPでよく使う定数、関数、変数からMVCモデル,Object指向について考えた

はじめに こんにちはvolare大阪のジョンです。 今回は学校のチーム開発も近づいてきたのでphpの関数をclass化する事を考えました 勉強中の為何を言ってるんだ状態があるかもしれません。 クラスとはなんだろう? 定数、変数、関数の処理をまとめたもの - インスタンス?コンストラクタ?プロパティ?なにそれ 現在の理解レベル インスタンス class使う時に書かないとダメ コンストラクタ 使う時に同時に実行する関数 メソッド newしたインスタンス(変数)->クラス内の関数名 でクラス内の関数使える 関数といっているがクラス内での呼び方はメソッド,外側が関数 プロパティ クラス内の変数 $this->$無しプロパティ名 = 代入値 で 値を代入$this->$無しプロパティ名でクラス内、継承先で値を使い回せる アクセス権 継承とかobj,property使用する際の使用可能範囲 そもそもPHPでよく使う事になる変数、定数、関数って何? グローバル変数 : $_POST,$ _GET,$_SESSION,$_COOKIE,$_FILES あたり 定数 : DB : ホスト名,ユーザー名,パスワード,DB名 エラーmsgコード:101... dir : ...@...など 変数 : $i,$j,$k : カウント用変数 戻り値 : 受け取る必要がある場合 例)DB これら関、定、変数のスコープ範囲は?(class内でそのまま使えるの?) グローバル変数 $_POST etc... : 関数内では値が適応されない = プロパティ設定するにせよ引数が一回は必要 = controllerで必ず書く必要が出る 定数 : 同ページに宣言or存在していれば(requireなど)関数内でも値が適応される = 複数使用される関数に使用すればコード削減に繋がる 変数 : 関数内外で完全に区別(引数以外は) = 使うなら関数内で使えばフローチャート組むコントローラが綺麗に mvcに当てはまるとどういう事 controllerで使用すべき処理  各グローバル変数 + CRUD + 細かい処理を短くした関数 + 分岐 で フローチャートを組み立てる modelで使用すべき処理 細かい処理を短くしてコントローラに送れる様にする事!!!(バリデ,圧縮,変換 etc...) 関数名を処理の種類ごとに短く、分かりやすくしてコントローラを見やすくするのが大事。 view 三項演算子使うと他で一回分岐なくて済むので使おう(display:noneとか) 厄介な処理とは この3種それぞれに処理をさせてくる機能 pagingとか。 実践 今回の処理 サムネイル画像一覧表示,投稿 ※ 各処理失敗時のエラー処理はなし。 DB文字コード環境について https://qiita.com/drafts/7430f5987ef0ee774123/edit# フローチャート 画像の一覧表示(DBからRead) buttonで送信されたら(POST値確認) 一言と写真名を保存 一言(POST → DBにcreate) 写真(FILES[name] → DBにcreate) 写真を保存 写真(FILES[tmp] → imgフォルダに) サムネイル用画像を保存 (圧縮処理) 再読み込み gitリポジトリと実制作物URL 素PHP 関数化PHP class化 追記 そもそも機能が少ないのでobject指向で考えると登録Createと一覧表示readの2つのクラスになる? というかobject指向だと一つにまとめる? もう一つの例,文庫CRUDシステムをクラス化してみた。 User クラス ユーザー登録 CRUD クラス CRUD utility クラス エスケープ 今回触っていて疑問点 繋がっている一覧の処理の途中エラーが発生した場合 : DBに名前は保存されたけど画像保存されてない どうするべき? 後からupdateできる機能追加? 失敗したらDBロールバック? 配列の添字が決まっているグローバル変数はクラス化する価値あり? modelに分岐をどこまでさせるか。今回だと拡張子あり クラス化することによるメリット 複数の関数で引数を所持したまま関数内部で別の関数に代入できる = 引数が必要なくなる = 変更があった場合に変更量が少ない クラス化することによるデメリット クラス内でのプロパティ(一番上の変数) = $this->プロパティなど書き方が独特で慣れるまで理解しにくい アロー演算子など理解するまでのコスト まとめ 変数: 無駄に値を代入するな グローバル変数で処理しろ 使うなら関数内で使え 関数: 細かく細かく処理毎に分けて名前だけ 短くしろ。最初から引数を多く設定しようとしなくていい。引数になり得る値だけコメントで残してその時点の処理で必要な引数(変化する可能性のある数)のみ引数にしろ クラス: 関数細かく沢山作ったなら共通の変数、定数を もちうる関数をまとめろ。同じく引数=プロパティは少なくていい。 コメント: 関数コメントを書く時は/**押してから書け この中に書けばvscordの機能で関数の引数,返り値が参照しやすくなる 引数: 機能に対して少なく,機能が増えるにつれ増やしていく事。初めから多くのプロパティを作ろうとするな。 分岐: 初めから分岐させなくていい 確実に分かる所から必要な所に増やしていく事 classを使う際のポイント プロパティとはクラスの変数 アクセス権によってプロパティに代入する際の方法が違う。 private,protected = コンストラクタで $this->プロパティ = 代入値; で代入する事で $this->プロパティ名がクラス内で変数のように使える $ が $this->になったイメージ class 新規クラス名 extends 親クラスで 代入された親クラスのプロパティを引き続き使用できる。 public = 上記 + $インスタンス化した変数->プロパティ名 = 代入値で class外から代入可能 参考サイト: https://www.geekly.co.jp/column/cat-technology/1911_040/ progate PHP3〜5 ドットインストール
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = hogehoge and table_name = migrations and table_type = 'BASE TABLE')

前提 ・Mac m1チップ ・Laravel8系 ・MySQL8系 ・PHP7系 ・envファイルに正しくDB情報を書いた。 ← ここまでちゃんと切り分けしましたか? 補足:.envに正しく書いたらしいことを確認する方法 ・ターミナルで下記を打って、パスワードをちゃんと入力して入れますか? mysql -u 書いたユーザー名 -p show databases; ・下記コマンドを打って、対象DBをちゃんと用意したことを確認しましたか? show databases;  → 結果に対象のDB名が出て来れば良い。 ・接続先がDockerのMySQLコンテナである場合、別途調べてください。 注意 ・タイトルのhogehogeを接続先となるDB名に置き換えて、もし手元のエラーと等しくないならやらない方が良いかもしれません。DBなので。(とは言っても、やってしまっても大丈夫なよう新規ユーザーを作成するような形にしてます。) 解決方法 ・利用しているユーザーのパスワードを「mysql_native_password」で変更してやる。 ・自分としては、新しくユーザーを作成してから試してみることをお勧めします。 // ユーザー作成 create user fuga@localhost identified by 'fugafuga'; // 権限付与(とりあえず全て。ここは必要に応じてドキュメント読みながら調整。) grant all privileges on *.* to fuga@localhost; flush privileges; // パスワードをmysql_native_passwordを利用して変更する alter user fuga@localhost identified with mysql_native_password 'fugafuga'; 解決するまでに読んだ記事 ・https://trialanderror.jp/mysql-8x-laravel-migrate/ ・https://blog.janjan.net/2018/11/01/mysql8-request-authentication-method-unknown-to-the-client/ ・https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password ・https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql-ja ・https://www.dbonline.jp/mysql/user/index6.html
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

laravel8 超絶簡単なCRUD処理を作る

目的 laravel8にて超絶簡単なCRUD処理を含んだWebアプリを作る方法をまとめる 環境 ハードウェア環境 項目 情報 OS macOS Big Sur(11.6) ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) プロセッサ 2 GHz クアッドコアIntel Core i5 メモリ 32 GB 3733 MHz LPDDR4 グラフィックス Intel Iris Plus Graphics 1536 MB ソフトウェア環境 項目 情報 備考 PHP バージョン 7.4.11 Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする Laravel バージョン 8.X commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う MySQLバージョン 8.0.21 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする 概要 投稿型SNSの超絶簡易版的なものを作ってWebアプリの基礎であるCRUDを学ぶ。 認証機能無し 画像アップロード無し とにかく文字だけ投稿できるようにする。 ただ、依存注入、サービスクラス、リポジトリクラスなどを用いて実装を行う。 そのため作り的には超絶簡単ではあるが、もしかすると初心者向けじゃないかもしれません。 他にももっと良い実装方法があるはずなので、参考の一部としていただきたい。 Macに直接laravel・MySQLローカル環境を構築してアプリを作成した。 本laravel8アプリのソース https://github.com/miriwo0104/laravel8_easy_crud 方法 アプリの作成 任意のディレクトリで下記コマンドを実行してlaravel8のプロジェクトを作成する。 $ composer create-project "laravel/laravel=8.*" laravel8_easy_crud -vvv MySQLにてテーブルの作成と.envの紹介 MySQLにてlaravel8_easy_crudテーブルを作成する。 下記のように.envファイルに記載する。(MySQLの情報の部分は皆さんの環境に合っている情報を記載してください。) laravel8_easy_curd/.env APP_NAME=Laravel8_easy_crud APP_ENV=local APP_KEY=base64:JAeeSV6U8967eYtwwcKLjS/kXjEKBZECcfXVPLXG834= APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel8_easy_crud DB_USERNAME=皆さんのMySQLの読み書き権限のあるユーザー名 DB_PASSWORD=皆さんのMySQLの読み書き権限のあるユーザーのパスワード BROADCAST_DRIVER=log CACHE_DRIVER=file FILESYSTEM_DRIVER=local QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 MEMCACHED_HOST=127.0.0.1 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" ルーティングの記入 ルーティング情報を下記のように記載する。 laravel8_easy_crud/routes/web.php <?php use App\Http\Controllers\ContentController; use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); Route::prefix('contents')->group(function() { Route::get('/list', [ContentController::class, 'list'])->name('contents.list'); Route::get('/create', [ContentController::class, 'create'])->name('contents.create'); Route::get('/update/{content_id}', [ContentController::class, 'update'])->name('contents.update'); Route::get('/delete/{content_id}', [ContentController::class, 'delete'])->name('contents.delete'); Route::post('/save', [ContentController::class, 'save'])->name('contents.save'); }); コントローラーの記載 ContentController.phpを作成して下記のように記載する。 laravel8_easy_crud/app/Http/Controllers/ContentController.php <?php namespace App\Http\Controllers; use App\Services\ContentService; use Facade\FlareClient\View; use Illuminate\Http\Request; use App\Http\Requests\ContentRequest; class ContentController extends Controller { public function __construct( ContentService $contentService ) { $this->contentService = $contentService; } /** * 投稿一覧ページの表示 * * @return view */ public function list() { $content_infos = $this->contentService->getAllContentList(); return view('contents.list', ['content_infos' => $content_infos]); } /** * 新規投稿作成 * * @return view */ public function create() { return view('contents.create'); } /** * 投稿編集 * * @param integer $content_id * @return view */ public function update(int $content_id) { $content_info = $this->contentService->getContentInfoByContentId($content_id); return view('contents.update', ['content_info' => $content_info]); } /** * 投稿削除 * * @param integer $content_id * @return view */ public function delete(int $content_id) { $this->contentService->delete($content_id); return redirect(route('contents.list')); } /** * 新規作成・投稿編集の情報保存 * * @param ContentRequest $post_data * @return view */ public function save(ContentRequest $post_data) { $this->contentService->save($post_data); return redirect(route('contents.list')); } } サービスクラスの記載 ContentService.phpを作成して下記のように記載する。 laravel8_easy_crud/app/Services/ContentService.php <?php namespace App\Services; use App\Repositories\ContentRepositoryInterface as ContentRepository; use Illuminate\Database\Eloquent\Model; class ContentService { public function __construct( ContentRepository $contentRepository ) { $this->contentRepository = $contentRepository; } /** * 投稿内容の取得 * * @return Model */ public function getAllContentList() { return $this->contentRepository->getAllContentList(); } /** * 投稿内容IDに紐づく投稿内容の取得 * * @param integer $content_id * @return Model */ public function getContentInfoByContentId(int $content_id) { return $this->contentRepository->getContentInfoByContentId($content_id); } /** * 投稿内容の保存 * * @param Request $post_data * @return Model */ public function save($post_data) { return $this->contentRepository->save($post_data); } /** * 投稿削除 * * @param integer $content_id * @return Model */ public function delete(int $content_id) { return $this->contentRepository->delete($content_id); } } リポジトリクラスの記載 ContentRepositoryInterface.phpを作成して下記のように記載する。 laravel8_easy_crud/app/Repositories/ContentRepositoryInterface.php <?php namespace App\Repositories; use Illuminate\Database\Eloquent\Model; interface ContentRepositoryInterface { /** * 投稿内容の取得 * * @return Model */ public function getAllContentList(); /** * 投稿内容IDに紐づく投稿内容の取得 * * @param integer $content_id * @return Model */ public function getContentInfoByContentId(int $content_id); /** * 投稿内容の保存 * * @param Request $post_data * @return Model */ public function save($post_data); /** * 投稿削除 * * @param integer $content_id * @return Model */ public function delete(int $content_id); } ContentRepository.phpを作成して下記のように記載する。 laravel8_easy_crud/app/Repositories/ContentRepository.php <?php namespace App\Repositories; use App\Models\Content; use Illuminate\Database\Eloquent\Model; class ContentRepository implements ContentRepositoryInterface { public function __construct(Content $content) { $this->content = $content; } /** * 投稿内容の取得 * * @return Model */ public function getAllContentList() { return $this->content ->select('*') ->where('deleted_flag', config('const.content.deleted_flag.false')) ->get(); } /** * 投稿内容IDに紐づく投稿内容の取得 * * @param integer $content_id * @return Model */ public function getContentInfoByContentId(int $content_id) { return $this->content->find($content_id); } /** * 投稿内容の保存 * * @param Request $post_data * @return Model */ public function save($post_data) { return $this->content->updateOrCreate( ['id' => $post_data->id], ['content' => $post_data->content], ); } /** * 投稿削除 * * @param integer $content_id * @return Model */ public function delete(int $content_id) { $content_info = $this->content->find($content_id); $content_info->deleted_flag = config('const.content.deleted_flag.true'); return $content_info->save(); } } ビューの記載 contentsディレクトリをlaravel8_easy_crud/resources/views直下に作成する。 create.blade.phpを作成して下記のように記載する。 laravel8_easy_crud/resource/views/contents/create.blade.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>新規投稿</title> </head> <body> <header></header> <main> <h1>新規投稿</h1> <form action="{{ route('contents.save') }}" method="post"> @csrf @error('content') {{ $message }} <br> @enderror <textarea name="content" cols="30" rows="10"></textarea> <input type="submit" value="投稿"> </form> </main> <footer></footer> </body> </html> list.blade.phpを作成して下記のように記載する。 laravel8_easy_crud/resource/views/contents/list.blade.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>投稿一覧</title> </head> <body> <header></header> <main> <h1>投稿内容</h1> <ul> <li><a href="{{ route('contents.create') }}">新規投稿</a></li> </ul> @foreach ($content_infos as $content_info) <div>{{ $content_info->content }}</div> <div>{{ $content_info->updated_at }}</div> <a href="{{ route('contents.update', ['content_id' => $content_info->id]) }}">編集</a> <a href="{{ route('contents.delete', ['content_id' => $content_info->id]) }}">削除</a> <br> <br> @endforeach </main> <footer></footer> </body> </html> update.blade.phpを作成して下記のように記載する。 laravel8_easy_crud/resource/views/contents/update.blade.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>編集</title> </head> <body> <header></header> <main> <h1>編集</h1> <form action="{{ route('contents.save') }}" method="post"> @csrf @error('content') {{ $message }} <br> @enderror <input type="hidden" name="id" value="{{ $content_info->id }}"> <textarea name="content" cols="30" rows="10">{{ $content_info->content }}</textarea> <input type="submit" value="保存"> </form> </main> <footer></footer> </body> </html> リクエストの記載 ContentRequest.phpを作成して下記のように記載する。 laravel8_easy_crud/app/Http/Requests/ContentRequest.php <?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class ContentRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'content' => ['required'], ]; } } マイグレーションファイルの記載 contentsテーブルを作成するためのマイグレーションファイルを用意する。 下記のように記載する。 laravel8_easy_crud/database/migrations/YYYY_MM_DD_XXXXXX_create_contents_table.php <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateContentsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('contents', function (Blueprint $table) { $table->id(); $table->text('content')->comment('投稿内容'); $table->unsignedTinyInteger('deleted_flag')->default(0)->comment('削除フラグ デフォルト:0 削除:1'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('contents'); } } 下記コマンドをlaravel8_easy_crudディレクトリで実行してマイグレーションを実行する。 $ php artisan migrate シーダーの記載 ContentSeeder.phpを作成して下記のように記載する。 laravel8_easy_crud/database/seeders/ContentSeeder.php <?php namespace Database\Seeders; use Carbon\Carbon; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class ContentSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $contents = [ 'テスト投稿_1', 'テスト投稿_2', 'テスト投稿_3', 'テスト投稿_4', 'テスト投稿_5', 'テスト投稿_6', 'テスト投稿_7', 'テスト投稿_8', ]; $now = Carbon::now(); foreach ($contents as $content) { $info = [ 'content' => $content, 'deleted_flag' => 0, 'created_at' => $now, 'updated_at' => $now, ]; DB::table('contents')->insert($info); } } } DatabaseSeeder.phpを開いて下記のように記載する。 laravel8_easy_crud/database/seeders/DatabaseSeeder.php <?php namespace Database\Seeders; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { // \App\Models\User::factory(10)->create(); $this->call(ContentSeeder::class); } } 下記コマンドをlaravel8_easy_crudディレクトリで実行してシーダーを作動させる。 $ php artisan db:seed 確認 $ php artisan serveコマンドにてローカルサーバーを起動する。 http://127.0.0.1:8000/contents/listにアクセスする 。 下記の様に表示されることを確認する。 「新規投稿」 をクリックする。 テキストエリアになにか入力して「投稿」をクリックする。 投稿一覧ページの最下部に今投稿した内容が追加される。 任意の投稿の「編集」をクリックする。 テキストエリアにすでに投稿されている内容が初期値として格納されている。何かしらの編集をして「保存」をクリックする。 投稿一覧ページで確認すると編集内容が反映されている。 「削除」をクリックすると当該の投稿が投稿一覧ページに表示されなくなる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む