IT関連

Laravel 生成読取更新削除 CRUD全手順 私の備忘録

投稿日:2020年8月27日 更新日:

事前注意事項

今回はXAMPPを使うので、インストールするパスはc:\xampp\htdocsとする。

ゆえに以下コードで>になっているものは、C:\xampp\htdocs>という意味。

コードの上は公式、下が実際に入力したコードとする。

 

Laravelのインストール

  • 実行したカレントディレクトリにプロジェクト名のフォルダが作られ、その中にLaravel一式が入れられる。
  • –prefer-distは現行バージョンを取得する意味だとか聞いたことある
  • プロジェクト名を付けなければlaravelになった。laravel/laravelにしたから?

 

Laravelのバージョン

Laravelがインストールされているディレクトリで実行すること。

 

データベース作成

データベースは作っておく。データベース名は「xampp」にする。

 

ダミーデータを入力する

 

権限付与

 

データベース接続

.envファイルを編集する。

 

コントローラの作成

これでLaravelapp/app/Http/Controllers直下に作成される。

 

ルーティングの設定

routes/web.php内に記入

 

コントローラーからとりあえずDBにアクセス

 とりあえずvar_dumpで接続できるか確認。

 

var_dumpの結果

 

コントローラーからViewへ受け渡し

連想配列として受け渡す。第二引数は配列にすること。

 

コントローラはこういう形。

 

View側はこういう形。resources/viewsディレクトリにhelloディレクトリを作りそこに置く。ファイル名はindex.blade.php

 

結果はこんな感じ。

新規作成を作る

 

index.blade.phpに追記

</table>の後ろに追記

 

こんな感じになる。

web.phpに追記する

新規登録のボタンを押したルーティングを追加する。

 

HelloController.phpに追記する

function indexの下に追記する

ちゃんとコントローラークラスの中に入るように注意。

 

add.blade.phpを作成する

置き場所はindex.blade.phpと同じ場所。resources/views/hello直下。

フォームのアクションをhello/createにして、createメソッドを実行するようにする。

postのときはcsrf_field()を入れなければ403エラーになので必ず入れること。

 

新規登録のボタンを押下してadd.blade.phpにアクセスするとこんな感じ

web.phpに追記する

下記を追加する。

 

すると、こうなる。

 

パスは同じaddでいい。

getでアクセスした場合は、addメソッドでコントローラーに書かれたadd.blade.phpを表示する。

postでアクセスした場合は、createメソッドでコントローラーに書かれたDB::insertを実行する。

 

getは別画面からこの画面にアクセス。postはこの画面からこの画面にアクセス。

 

HelloControllerにcreateメソッドを追加する

入力した値を受け継いで、データベースに登録する処理です。

データベースに登録した後はindex表示のhelloにredirectする。

viewとredirectの違いは、

  • viewは引数に明記されたviewテンプレートを呼び出す
  • redirectはweb.phpのルートにアクセスしたことになる。

 

更新処理を作る

indexで一覧表示されたものをクリックすると更新画面に飛んで、打ち替えたあと更新ボタンでデータベースを更新するものを作ります。

 

web.phpに追加する

今回はgetとpostを一気に書きます。

getは更新用の画面を表示する、postは更新ボタンでDBを更新する用です。

さっきとまったく同じです。

 

index.blade.phpに/hello/editへのリンクを追記する

IDにリンクをつけクリックできるようにします。

 

HelloControllerにeditメソッドを追加する

limit 1にして1レコードしか渡さないようにする。

 

正式には下記のようにするらしい。

limit 1などせずに、view側で{{$form->name}}などとする。

 

$items配列の[0]だけを渡して、view側で1件だけを処理している。

もし上記のように’items’ => $itemsで渡すと受け渡る配列は2次配列になるので、@foreachで処理しなければならない。

今回は@foreachで処理する。

これで処理するのはスマートではないのはわかるが、正直のところ‘form’ => $items[0]とする意味が理解できないので今回はこれは使わない。

 

 

edit.blade.phpを作成する

基本的にaddとあまり変わらない。

 

画面はこうなる。

更新ボタンを押すと/hello/editへpostして、その先でDBを更新するメソッドが動く。

IDは主キーにより変更できないので、画面上にはIDの枠はない。

しかしDBを更新するキーとして更新プログラム側にIDは受け渡してあげないといけない。

そのため<input type=”hidden”>を使って非表示の値を作ってあげる。

 

HelloControllerに更新処理updateを追加する

updateするに必要なすべてを$requestで受け取り、$param配列に入れてSQL文に渡す。

終わったらredirectでindexのhelloに戻ってくる。

 

削除処理を作る

更新処理で作ったindex一覧のリンクeditのview内に削除ボタンを設ければいいと思う。

 

edit.blade.phpに追加する

更新画面の中の</form>の後に削除ボタンを設ける。

これも微妙な書き方だと思う。

 

前提として、削除するなら削除メソッド側にIDを渡してあげないといけない。

それをクエリー文字列で渡している。

クエリー文字列とは?id=というやつ。

 

下記のようにすれば

更新ボタンを押しても、aとbuttonで作られた削除ボタンを押しても、formのactionが実行されてしまう。

なので削除ボタンを押しても、/hello/editの方に飛ぶ。

 

画面はこんな感じ。こうなってくると既存更新ではなく、更新削除画面の方がいいのかもしれない。

web.phpに追加する

上記で削除ボタンを押したら/hello/delに飛ぶようにしている。

 

HelloControllerにdeleteメソッドを追加する

クエリ文字列はRequestで受け取れるので他と同様。

DBクラスのdeleteメソッドも他と同じような感じ。

 

以上。自分のレベルで自力で作ればこうなった。

他にいい書き方があるはずなので、これから探す予定。

スポンサーリンク




スポンサーリンク




-IT関連
-,

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

XAMPP Windows 複数のPHPバージョンを切り替える 共存

なんちゃってWebプログラマーの俺が、会社でなんちゃってプログラムを作っている話なので、話半分に聞いてほしい。というか、自分の備忘録です。   会社の基幹サーバに対してWebで照会するプログ …

Git .gitignoreが利かないというかおかしい件

ブログなので皆さまのお役にたてば幸いですが、あくまで自分の忘備録なので、昔話も含めて書いております。ご了承ください。 環境は、 開発環境は自席PC(ローカル) Windows10PC XAMPP7.2 …

残業を無くしたい人に伝えたいExcelVBAの存在 エクセルプログラミング

簡単に自己紹介から 現在私は会社のIT部門でプログラムを書く仕事をやっていますが、約4年前は広島で営業補佐の仕事をやっていました。要するに事務職ですね。   広島というと地方になるのですが、 …

WindowsからMacに切り替えてお仕事をしよう

会社が私にMacBookProを買ってくれたので早速使おうと思ったけど、ずっと仕事でWindowsを使っていた私にとっては、かなり使いにくい。 といって開かずにいたら、かれこれ半年が経過してしまった。 …

Visual Studio Code ショートカット Mac/Windows

VSCodeの便利なショートカットの備忘録です。   ★別ウインドウを開く 「Ctrl」+「Shift」+「N」   ★ファイルの新規作成 Web開発ではエディタを開いているときに …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に