Laravel

Laravel クエリの切り出し、ローカルスコープ

クエリの切り出し コントローラでの記述を無くし、ファットコントローラを防ぐ為、モデルに共通クエリ制約(ローカルスコープ)の定義する。 readouble.com ローカルスコープ お作法として、メソッドの頭にscopeとつけて引数に$queryとし、戻り値に$queryと書…

Laravel Socialite OAuth認証の実装(Googleログイン)

実行環境 mysql5.7 phpmyadmin Laravel Framework 8.83.26 PHP Version 8.1.13 Apache/2.4.54 (Debian) socialiteを使用し、OAuth認証を実装 OAuthとは OAuth (オー オース) は、権限の認可(authorization)を行うためのプロトコル。 認可のためのプロトコル…

Laravel Stripe決済実装

実行環境 mysql5.7 phpmyadmin Laravel Framework 8.83.26 PHP Version 8.1.13 Apache/2.4.54 (Debian) Stripe API型決済ライブラリ 手数料 3.6% テストモードあり 会員登録後 APIキー発行 stripe.com 新規アカウント作成後 新規ビジネスからアカウント…

Laravel,Swiper

多機能・レスポンシブ対応・スライダーが作れるjavascriptライブラリ swiperjs.com このようなスライダーを作成する セットアップ resources/js/swiper.jsを作成しjsを記入していく app.jsは全ページで読み込まれるので、Swiper.jsとして個別で読み…

Laravel 多対多リレーション

複数のuserが複数のproductをもてる→多対多 中間pivotテーブルとしてcartを作成し、それぞれ1対多の関係にする cartsテーブル作成 root@f6999f3b8a5b:/var/www/html# php artisan make:model Cart -m 外部キー設定を記述 id(); //ownerを削除したらshopも消…

Laravel Faker Factory

Faker ・・PHPライブラリ ダミーデータ生成 →Laravelには標準搭載 fakerphp.github.io Factory・・ダミーを量産する仕組み Laravel8からクラスベースに変更 日本語化対応 config/app.php→'faker_locale' => ‘ja_JP’, に変更 php artisan config:cl…

Micromodal

Micromodal.js 簡単にモーダルウィンドウを実装できるライブラリ。 CSSのデザインは標準でははいっていないので追加する。 デザインされた雛形を使う 軽量 jQuery未使用 背景スクロールを固定 閉じるボタン、背景クリック、ESCボタン押下で閉じる事が可能 mi…

Eager Loading

概要 リレーション先の情報を取得する際には、N+1問題が発生するので、EagerLoading Withメソッドを使い取得する必要がある。 画像一覧のindex.bladeを確認すると :filename="$product->imageFirst->filename" とリレーションでリレーション先の情報を取得し…

Laravel 外部キーやリレーションなど

productsテーブル作成 productモデル、マイグレーション作成 外部キーを設定する際には、親のモデルを削除するかどうか、親を削除したときに同時に削除するかを考える必要がある。 ownerを削除したらshopも消える、shopが消えたらproductも消えるようにする→…

Laravel Seeder複数テーブル書く方法

primary_categoriesテーブルとsecondary_categoriesテーブルを作成。 どちらも関係のあるカテゴリーなので1つのマイグレーションファイルに書いていくので1つだけ作成。 primary_categoriesは複数のカテゴリーをもつので1対多の関係になる。 php artisan m…

Laravel 画像の複数アップロード

inputタグに追記 multiple属性、name属性をfiles[image]とする。 files[image]としてファイルを選択して送信すると、Requestとして配列で渡ってくるので配列のバリデーションが必要。 →フォームリクエストに追記する。 <div class="p-2 w-1/2 mx-auto"> <div class="relative"> <label for="image" class="leading-7 text-sm text-gray-600">画像</label> {{-- 画像の場合file,name属性</div></div>…

Docker上のLAMP環境にXdebugをいれる。(VScode)

概要 VScode拡張機能、Xdebug v3.2.0のインストール Docker上に構築したLAMP環境にxdebugを入れてステップイン・アウトを実行する vscode上で実行できるようにする ディレクトリ構造 現在のversion mysql5.7 phpmyadmin Laravel Framework 8.83.26 PHP Versi…

Laravel 画像管理画面のindex作成

imageテーブル作成 リレーション hasOne(Shop::class); } public function image() { //imageを複数もてる1対多の関係なのでhasManyとする return $this->hasMany(Image::class); }

Laravel アップロードした画像をviewで表示

アップロードした画像をDBへ保存し、view側で表示させる。 Controller ファイルに関するバリデーション→FormRequest 属性に対してのバリデーション→コントローラ内記述 バリデーションが通ったら画像ファイルをアップロード 更新処理 $idを元にエロクアント…

Laravel バリデーション FormRequest

FormRequest フォームリクエストを使用するとリクエスト作成時にバリデーション処理を挟むことができる。 コントローラでの記述を無くし、ファットコントローラを防ぐ→リファクタリング root@6381a967eccb:/var/www/html# php artisan make:request UploadIm…

Intervention Image リサイズ

前提 Intervention Imageはインストール済 ShopControllerへ記述 $request->imageでviewで指定したname属性を取得することで画像を取得できる $imageFile = $request->image; 画像がnullでなかったら && isValidでアップロードできたか判定 if(!is_null($ima…

Intervention Imageのインストール、Docker上でPHP拡張モジュール「GD」を有効化

Intervention Image 画像リサイズをするためのPHPライブラリ image.intervention.io 無効になってたら有効化→phpinfo();で確認 FileInfo Extension →有効 GD 画像ライブラリ→無効だった →そもそもphpinfo();で確認したが、GDに関する記述がこれだけしかなか…

Laravel エラー画面

カスタムエラーページ abortヘルパ関数で指定できる。 abort(404); APIが返すHTTPステータスコード コード 意味 401 不正なエラー 404 Not Found 500 サーバー側エラー $ php artisan vendor:publish --tag=laravel-errors resources/views配下にerrorsフォ…

Laravel コントローラミドルウェア

Shop edit,updateの場合ルートパラメータの注意 edit,updateアクションの場合、URLにパラメータを使うときに注意が必要。 たとえば、以下のようなURLの場合、 /owner/shops/edit/2/ IDの2をURL上から直接変更すると他のownerのidのshopがみれてしまうので、 …

Laravel shop一覧、編集画面遷移、transaction、例外処理

ownersとshopsテーブルの関係 shop作成、transaction、編集画面 shop作成 1つのownerが1つのshopをもつのでowner登録をした際に同時にshopも作るようにする。 →ownerを作成するのはadmin側なので、adminでownerを登録した際にshopも作成する。 編集画面遷移 …

Laravel 外部キー Tinker

外部キー制約 紐づくモデル名+「_id」で外部キーと呼ぶ shopsテーブルにowner_idを作成しownersテーブルのidと紐付ける model migration seederの作成 shopのマイグレーションファイル foreignId('owner_id')->constrained();で「紐づくモデル名_id」として…

Laravel Seeder

DBにダミーデータを作成 php artisan make:seeder AdminSeeder php artisan make:seeder OwnerSeeder 以下database/seeders 直下に生成

Laravel logo設定 リソースコントローラ

public配下にロゴ配置 $ php artisan storage:linkでpublicフォルダ配下にシンボリックリンクを貼る 後々 画像アップロード機能をつけるので事前に対応 publicフォルダに直接置く・・初期ファイル storageフォルダ・・フォルダ内画像はgitHubにアッフ…

Laravel マルチログイン コントローラ View.blade作成

マルチログインコントローラ マルチログイン設定の続き。 breezeインストール時にAuthフォルダが作成されてるのでそれをコピーして編集 App/Http/Controllers/Auth resources/views/auth owner.phpにguard権限付与

Laravel ヘルパ関数 eloquent collection querybuilder

ヘルパ関数 →https://readouble.com/laravel/9.x/ja/helpers.html laravel側で用意されてる。よく使うヘルパ; route to_route リダイレクト関係 redirect url auth→認証 app bcrypt→暗号昨日 collect→コレクションを作るための関数 dd→変数の中を表示 env c…

Laravel マルチログイン設定

マルチログイン流れ モデル、マイグレーション作成 ルート設定 ルートサービスプロバイダ設定 ガード設定 ミドルウェア設定 リクエストクラス設定 コントローラー&ブレード作成 7. コントローラー&ブレード作成 1.モデル&マイグレーション…

Laravel マルチログイン Lifecycle

マルチログイン関連ファイル model、controller、view、route providers/RouteServiceProvider.php ログイン後のURL config/auth.php Guard設定 ログイン方法、どのテーブルを使うか middleware/Authenticate.php 未認証時のリダイレクト処理 midd…

Laravel 初期設定 DB Controller

設定内容 タイムゾーン 言語設定 デバッグバー DB設定 Controller 環境 Docker上でのLAMP環境 mysql5.7 phpmyadmin apache2.4 PHP 8.1.11 Laravel Framework 8.83.25 Laravel Breeze 1系の最新版 タイムゾーン、言語設定 'timezone' => 'Asia/Tokyo', エラー…

npm run devがvite laravel 9で機能しない

エラー内容 MAMP環境でlaravel breezeインストールcomposer require laravel/breeze:^1.13 --dev、npm run dev時にエラー owner@MacBook-Pro task_test % npm run dev > @ dev /Applications/MAMP/htdocs/laravel/task_test > vite /Applications/MAMP/htdoc…

LaravelのセッションとCookie,HTTP,CSRF

概要 cookie セッション HTTP ログイン ステートレス cookie cookieはPC上のブラウザごとに保存される情報、領域。 ブラウザを変えるとログイン情報は別のものになる。 ブラウザ上に保存されるので使用者は情報が見れる状態にあるのでパスワード保存はNG chr…