laravel

【Docker】【Laravel】docker-compose 立ち上げ時にLaravelの初期構築コマンドを実行する

久しぶりに新しく一から作るWebアプリケーションを作る事になり、数年ぶりに色々情報をアップデートしました。 さて、 アプリケーションの開発環境を作る場合、なるべく初期構築手順を簡略化したいものです。 今回はDocker で環境を立ち上げた際に、Laravel…

【Laravel】昔作った5系のプロジェクトがマイグレート出来ない

2021年5月現在バージョンは8系ですので、新しくLaravelのプロジェクトを作る人にとっては意味がない情報かもしれません。 Installation - Laravel - The PHP Framework For Web Artisans 5系で動いているLaravelプロジェクトの環境構築する機会がありました…

【Laravel-DomPDF】独自のheaderを追加する

小ネタです。 Laravel-DomPDFで、独自のheaderを追加したい場合の対処法です。 通常のダウンロード処理 公式ドキュメントは下記です。 github.com 従来の方法 例えば、ファイルをブラウザで表示せずダウンロードする場合、下記のheader を指定します。 Conte…

【Dompdf】テキストに日本語を使用する

Webシステムで帳票を生成する機会というのはよくあります。 PDFを作成するライブラリは色々ありますが、手軽にHTMLライクで作れるライブラリとなるとDompdfがあります。 github.com しかし、デフォルトでは日本語に対応していません。 日本語を含むフォント…

【Laravel】リレーションされた要素数を取得する

プロジェクトが複雑になればなるほど、データベースを用いたやりとりの難易度も上がっていきます。 複数のテーブルをリレーションさせる事はよくあります。 Laravelではリレーション周りの関数も色々用意されており、複雑なリレーションにも柔軟に対応できま…

【Laravel-Admin】カスタムフィールドを作る

Laravel-Adminを使った管理画面を運用しているのですが、用意されている既存フィールドでは要件に合わない時があります。 laravel-admin.org 例えば、年月日の月を管理したい場合です。 もちろん、月を管理するためのフィールドは初めから用意されています。…

【Laravel】ロケーション周りの初期設定

Laravelをインストールして最初に実行する作業の一つに、アプリケーションのロケーション設定があります。 この作業をしないと、アプリケーションで扱う時間が日本時間と異なったり、バリデーションのメッセージが日本語にできなかったりします。 今回は、La…

【Laravel Mix】複数のスタイルやスクリプトのコンパイル処理を改善する

LaravelはフロントエンドコンパイルをするためのツールとしてLaravel Mixが導入されています。 laravel.com 初期状態でも十分使いやすいのですが、機能が多いプロジェクトの場合ではそのままでは使いづらいところがあります。 例えばページ毎に別のスタイル…

【Laravel】既存のテーブルに外部キーを設定、解除するマイグレーションを作る

Laravelでテーブルに変更を加える場合、基本的にマイグレーションで指示を書きます。 マイグレーションを書く時は、必ず立ち上げ時に起動するup関数と、ロールバックやリセットで実行するdown関数を設定します。 新規のマイグレーションについては、テーブル…

【Vue】コンポーネントのプロパティの初期値にバックエンドから値を代入する

Vueとバックエンドで共通の値を使いたい時があります。 シングルページアプリケーションの様にフロントとAPIで構成する場合は、APIでサーバーサイドとやり取りをすると言う方法が考えつきます。 しかし、設定値のためだけにAPIを使うと言うのは実装するのも…

【Laravel】Model Eventが動かないを原因を解消するまで

LaravelにはModel Eventと言うモデルの状態変更に合わせてコールバックを実行できる機能があります。 readouble.com laravel.com 最近、この機能を知りました。 その機能を別のシステムでも使おうとした所すんなり動かなかったので備忘録として残しておきま…

【Laravel】外部接続のインデックスを任意の名前に変更する

マイグレーションで外部接続を設定する時に、設定するテーブル名や外部きーが長いと次のようなエラーが出ます。 Syntax error or access violation: 1059 Identifier name 'xxxxxx_foreign' is too long is too long. この場合、短いインデックスを指定する…

【Amazon SES】ファイル添付をしたい場合の注意と対処法

SESはを用いたメール配信サービスを実装していると、ファイルの添付もしたいと言う要望があります。 例えば、マンスリーレポートの配信です。 レポートのサイズが1MB程度のファイルなら添付しても問題ありません。 しかし、20MBを超えるようなリテラシー的に…

【Laravel】ルートが解決出来ないエラーの対処法

2020年になりましたね。 今年も皆さんに良い年でありますように。 さて、 複数人でサービスを運用していると、別の方の作業をマージした事で新しい問題が発覚するケースがあります。 その場合、過去の変更前に戻して環境を戻して原因究明をする事もあります…

【PHP】【Laravel】静的関数で自分のグローバル変数(関数)を取得する方法

小ネタです。 アプリケーションを作成していると、静的関数(static function)からグローバル変数を使いたい時があります。 今回は、Laravelで自身のテーブル名を取得する方法を使って説明します。 動的関数の場合 通常の関数であれば$this->(変数名)で取得…

【Laravel】モデルに判定用の関数を追加してチェーンメソッドで呼び出す

指定したモデルで管理しているパラメータによって処理を変えたい時があります。 判定に使用するパラメータがbool型であれば、trueかfalseなので特に迷うことはありません。 しかし、int型で複数の状態を管理する場合があります。 int型でパラメータを管理す…

【Laravel】Requestクラスのルールを動的に変える

フォームを実装していると、下記のように選択状況に応じてバリデーションをするかしないか決めたい時があります。 必須入力の有無であれば、required_ifで対象のinput値を参照して切り替える事が可能です。 readouble.com しかし、日付データを比較するaftte…

【Larael】Middlewareで直接Viewを表示する

全てのページで同じような処理を行う場合、各コントロールの__constructに実装するより、Middlewareとして実装した方が便利です。 Middlewareを使えば、値を追加したり、コントローラの処理をする前にリダイレクトさせる事が可能です。 今回は、リダイレクト…

【Laravel】保存・更新時に特定のカラムを自動で暗号化(復号化)させる

システムを実装する上で、個人情報の暗号化は必ず対応すべき事です。 Laravelの場合、エンクリプタが用意されていますので処理自体は非常に簡単です。 readouble.com しかし、ルートやキー毎に手動で暗号化と復号化処理を入れるのは手間です。 さて、 今回は…

【Laravel】ナビゲーションに現在見ているページの位置情報を反映させる

現在ページの位置情報をフロントに反映させるという場面があります。 現在のURLを取得して解析する事自体は、jsでもphpでも可能なのですが、処理の記述が長くなってしまいがちです。 パンくずであれば、laravel-breadcrumbsというライブラリがあります。 pac…

【Laravel】envファイルの設定値に半角スペースを入れる方法

Laravelの.envファイル内で半角スペースを入れたい場合の対応方法です。 状況 アプリケーションの名前に該当するAPP_NAMEに下記のように設定しました。 APP_NAME=テスト タイトル view内で、次のようにh1にAPP_NAMEの設定値を表示できるようにします。 <h1>{{ co</h1>…

【Laravel】Laravel 5.7以降の未認証ユーザーのリダイレクト実装方法

2018年9月にリリースした5.7以降、Laravelの未認証時のリダイレクトを実装する方法が変わりました。 バージョン5.6以前は、app/Exceptions/Handler.phpのunauthenticated関数を使っており、最近でもその方法で解説する記事も多いです。 今回は、5.7以降の実…

【pug】【Laravel】laravel-mix-pugのタグ属性にPHPの処理を入れる

テンプレートエンジンにpug(jade)を使う場合、テンプレートのタグ属性にPHPの処理を入れるのにコツがいります。 環境 pugテンプレートのコンパイルはwebpackに任せます。 Laravelのプロジェクトを作るとデフォルトでlaravel-mix.jsと言うwebpackの設定ファイ…

【Composer】【Laravel】Laravelのプロジェクトディレクトリ内に独自クラスファイルを追加する方法

Laravelの機能やPHPの組み合わせれば大概の機能は実装できますし、Laravel側で仕様が決まっているので綺麗にかけます。 しかし、時には再現できない機能を実現するために自分でクラスを書いて追加したい時があります。 Laravelの場合、php artisanで関連する…

【Laravel】 5.8系にアップデートしてマイグレーションファイルを自動生成する時に注意する事

久しぶりにLaravelで新しいプロジェクトを作ったのですが、migrateの仕様が変わった部分があったので記事にしてみます。 環境 種類 バージョン laravel 5.8 migrate:modelでマイグレーションファイルも一緒に作った時の挙動について モデルを作成と一緒にマ…

【Laravel】特定の期間だけ終日メンテナンスモードにする

8月に入りいよいよ暑さのピークも迎えてきました。 それと同時に、そろそろ夏休みに入り始める時期でしょうか? それに付随して、システムもお休みにする事があるかもしれません。 さて、 今回は、特定の期間だけサイトの表示を切り替える方法を記載します…

【Laravel】bladeテンプレートで繰り返し処理の奇数・偶数処理を行う方法

Web制作の現場では良くある話だと思いますが、左右交互に配置してそれぞれ処理やスタイルを変える場面があります。 CSSでも、odd(奇数)、even(偶数)というセレクターが用意されていますが、スタイルだけでは立ち行かない場面もあります。 そんな時は、jsや…

【Laravel】テーブルの構成変更にキー制約が絡むMigrateファイルの作り方

前回に引き続きLaravelのMigrateについてです。 blog.websandbag.com ご覧いただいている方々は、次のような経験がないでしょうか? 仕様変更で、以前作ったテーブルの型や桁数を変更があった。 その対象のカラムは外部キー制約がされていて、関連するテーブ…

【Laravel】migrate時の「Foreign key constraint is incorrectly formed」エラーの解消方法

laravelでmigrate機能はとても便利です。 ライブラリ全般に言えることではありますが、1からクエリを書かないので管理のしやすさが格段に上がります。 しかし、生成されたクエリにエラーが発生した場合は、生でクエリを作るのと勝手が違って戸惑う場面もあり…

【Docker】MySQL8.0系を使う時に発生する問題について

新しいプロジェクトでは、過去に同じような構成をDockerで作っていればDockerfileを流用しています。 さて、 今回は、最新のMySQLイメージを使う際に発生する問題について記載していきます。 イントロダクション この記事で得られること MySQLの古いバージョ…

©︎2017-2018 WebSandBag