php laravel メモ

laravel5.5

3年ぶりに学習
laravel学習のよいサイトが見つからず、dotinstallを使用。
毎回の講義毎にソースをコピペできるのがありがたい。
しかしながらそれでも、毎回エラー、相当時間を使ってしまった。
先にhostのファイルとマウントするようした方が良かったか、その講義も事前にあって欲しい。
一通り早めに終わらした方がいいと思う。
6hが目標か、細かいところは気にしない。
講義は大雑把であり、あまり意味を考えると先に進めない、全体像を掴む方がよい。 (ヘルパ関数、コレクション型、クエリビルダは何気に使っているが、ドキュメントの調べ方や、
使い方等の説明はほとんどない。)
また別途vagrant環境構築に3hくらいかかった、とはいえ、確実に環境を作り、
laravelの学習を進めるにはアーカイブされているとはいえdotinstallが適していた。

Laravelインストール

php composer.phar create-project --prefer-dist laravel/laravel myblog "5.5.*"

フォルダ構成

●dababaseフォルダ
database.sqliteファイル を作成!!!
・migrationフォルダ
中身は削除
●publicフォルダ
●resourcesフォルダ
・viewsフォルダ
●routesフォルダ

アプリケーション 設定

DB設定
.envファイル
DB_CONNECTION=sqlite
以下は消す(必要なし)
DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret

configフォルダのapp.php 変更箇所 'timezone' => 'Asia/Tokyo', 'locale' => 'ja',

Model操作

php artisan tinker

modelはappの直下にある

データ挿入

App\Post::create(['title'=>'title 2','body'=>'body 2']);

Mass Assignmentの設定

作成したmodelに対し、 protected $fillable = ['title', 'body']; を追加(例)

データ表示

App\Post::all()->toArray();

ルーティング設定箇所

routesフォルダ web.appに記載
Route::get('/', 'PostsController@index');

コントローラ作成

php artisan make:controller PostsController

Controllerの場所
app の中の Http の中の Controllers

サーバ起動
php artisan serve --host 192.168.33.10 --port 8000

View作成
view は resources の中の Views の中に作る

Post に関する view をまとめたい時、 posts フォルダを用意

今回 index アクションなので index としつつ、 Laravel では Blade というテンプレートエンジンが使えるので、 index.blade.php とする

Controller の方でこちらの view を指定

データ抽出、デバッグ
// $posts = \App\Post::all(); // $posts = Post::all(); // $posts = Post::orderBy('created_at', 'desc')->get(); $posts = Post::latest()->get(); // dd($posts->toArray()); // dump die

抽出したデータをViewに渡して、Bladeの機能を使って表示  controllerにて、viewへデータを渡す
// return view('posts.index', ['posts' => $posts]); return view('posts.index')->with('posts', $posts);

CSSJavaScript や画像
public フォルダの中 cssならcssフォルダにstyles.css

詳細一覧

作成箇所 ルーティング コントローラ
モデルは呼び出すだけ
view

{!! nl2br(e($post->body)) !!}

本文の方は改行が入ってくる可能性もあるので、改行を br タグに変換したいので、まずは二重波括弧ではなく、中身をエスケープしないで値を出力するための {{!! !!}} という命令を使う

リンク対応

URLの生成方法 Implicit Binding

Viewの共通部分を切り出す  

共通部品の切り出し @yield, @extends, @section

views の中に今回は layouts フォルダを作ってあげて、その中に default.blade.php というファイルを作ってあげてその中に共通部品を入れ込んであげます。

新規リンク、バックの追加

新規追加

ルーティング追加
コントローラにcreateメソッド追加
view追加
フォームの作成
CSRF対策
新規のリンクにおいて、ルーティング追加に注意が必要

記事の追加

追加のコントローラのメソッドに注意要
Railsではメソッド名は固定だが、laravelでは自分で名前を作る Angularでは、各ルーティングのtsファイルにて処理する (Rails 例) GET /users/new new new_user_path ユーザーを新規作成するページ(ユーザー登録) POST /users create users_path ユーザーを作成するアクション

バリデーション

編集

更新

コントローラーの共通部分

php artisan make:request PostRequest
appの中のHttpにできている

削除

記事にコメント

php artisan make:model Comment --migration databaseフォルダのmigrationフォルダにできる
修正後、 php artisan migrate

記事とコメントを結びつける

コメント追加

php artisan make:controller CommentsController

コメント削除

sqlite3 database/database.sqlite

外部キー制約を有効にする

app/Providers/AppServiceProvider.php