Warning: Undefined variable $content in /home/c9099599/public_html/dstrikes.net/wp-content/themes/cocoon-child-master/tmp/content.php on line 76
この記事は 約6 分で読めます。
タイトル通りLaravel6系のおさらいをする
しばらく触らないとLaravelはすーぐ忘れてしまうので健忘録的メモです。
個人的メモですがこれからLaravelを始めようとする人にも極力わかるように書こうと思いやす
もちろんPHPの基礎学力やMVCの知識があるものとして記述します。
インストール
Laravelは2021年12月現在の最新版はVer8だが2022年にVer9がリリースされる模様
しかし、最新版のLaravelはVueやReactJSなどが使われていて煩雑な印象と学習コストが高いので使い辛い。
そこで旧Verの安定板を使うのもひとつの手として有効だと思う。
Ver指定インストール
composer create-project --prefer-dist laravel/laravel blog "6.*"
現在の場所に”blog”と言うフォルダが生成され、その中にLaravelの6系の安定板がインストールされる。
現在の場所にそのままインストールしたい場合
composer create-project --prefer-dist laravel/laravel . "6.*"
先ほどの”blog”の部分を”.”(ドット)に変更することで現在のフォルダ内にLaravelがインストールされる。
--prefer-dist
上記をつけるとZipでファイルをダウンロードして実行されるのでインストールが高速になります。
インストール後のVer確認
php artisan -V
最低限のルール
私も良くわかっていないがLaravelを効率的に開発するための最低限のルール
命名規則に則ることでLaravelの利便性を最大限に享受出来る仕組みになっています。
例えば自動的にリレーションしてくれたり・・・です。
- Modelは単数系 Postなど
- Controllerは複数形 Postsなど
- Artisanコマンド Controllerはスネークケースで記述 Create_Posts_Controller
とりあえずこれくらい??
他にもあれば随時追記します。
開発の流れ
- .envの設定 主にDB設定
- XAMPPやMAMPPで使う場合の App/Providers/AppServiceProvider.phpでDBエラー対策
- MigrationでDB設計を記述→Artisanコマンドでファイル生成
- Appフォルダ直下にModelファイル生成(単数系で命名) artisan make:model テーブル名
- Resource/routes/web.phpでルーティング記述
- コントローラー生成
- テンプレート制作
2. DBエラー対策
App/Providers/AppServiceProvider.php
以下を追記する
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
DBでエラーが出る場合は上記の設定をすればOK!
他にも別の場所で制御できたはずだけど、とりあえずこれやっとけば問題なかったのでこれでよし!
3.よく使う便利なArtisanコマンド
ルートの確認
php artisan route:list
マイグレーション実行
php artisan migrate
マイグレーション再実行
Refreshの他にReset freshなどがある
php artisan migrate:refresh
その他 :fresh :rollback :step–3 などがある
モデルを制作する時にマイグレーションも作る
php artisan make:model モデル名 -m
バリデーション(フォームリクエスト)
送信されたデータの可否について検証する→バリデーション
バリデーションをコントローラーと別の場所に設置することで見通しの良いコントローラーを作れる
別にコントローラーでバリデーションすることも可能だがエラーメッセージなどの処理と分けた方が楽
参考: https://qiita.com/Charry/items/ea2115f66503561f5061
参考: https://qiita.com/gone0021/items/68f0563ac2852ad96b14
php artisan make:controller TestController
App\Http\Requests\TestRequest にファイルが生成される
ルーティング
主にApp/routes/web.php を編集してURLとコントローラーを紐付ける。
ルートリスト一覧を出す
php artisan route:list
基本的なルーティング
Route::get('/', 'PostsController@index');
第1引数にURL(この場合はルートまたはindex.html)にアクセスがあった場合。
PostsControllerのFunction indexを参照すると言う意味になる。
またメソッドチェーンのように繋げて機能を持たせることも可能
Route::get('/inquiry', 'InquiryController@show')->name('inquiry');
上記の場合は name() で名前をつけて ‘/inquiry’ → inquiry でURLとパスを紐付けが可能になる
またコントローラーを通さずにアクセスを処理する場合は以下の方法も可能
Route::get('/', function () { return view('index'); });
テンプレート
エックスサーバーで公開する
普通のレンタルサーバーで公開する場合
LaravelのPublic/ にアクセスすると公開出来るのですが
さくらサーバーのようにフォルダにヒモつけが出来ない場合は簡単には公開できません。
参考: REFFECTさん
エックスサーバーだけでなく、ロリポップ、ConohaWingなどの一般的なレンタルサーバーで公開出来るところは少ないのが現状です。
そこで「シンボリックリンク(ショートカット)」と.htaccessを用いて公開する方法があります。
ln -s /home/アカウント/ドメイン/public_html/ /home/アカウント/ドメイン/public_html/public
Public_html直下に.htaccessを置きます
RewriteEngine On RewriteRule ^(.*)$ public/$1 [QSA,L]
https://hogehoge.com/ にアクセスが来たら https://hogehoge.com/public に転送させますが見えているのは https://hogehoge.com/ にアクセスしているように見えています。
サーバー内部にシンボリックリンクを製作出来ればこの他のレンタルサーバーでもLaravelを公開出来るはずです。SSHが使えずにシンボリックリンクが作れないサーバーだと難しいかも知れません。
また意外とレンタルサーバー屋さんに直接Laravelが使えるか?問い合わせて見るのも良いかも知れません。