2024.11.05「追記1:問題編」を追加しました! 2024.11.06「追記2:回答編」を追加しました! 2024.11.06 [補足]を追加しました! 前提LaravelはWordPressからステップアップしたい人に丁度フィットしたような作りになっており、オンプレ前提であり、MVC構成の簡単なSSR(サーバーサイドレンダリング)を推しています。WordPressの次のステップと捉えると納得できますし、小さなアプリを簡単に作るには丁度良いと思います。 しかし、これで大きなサービスを作ろうとすると途端に崩壊します。 基本的にドキュメント通りに作成すると画面とインターフェースが密結合し、サービスとしてのインターフェースが固まらない状態になります。 結果的に私が関わったプロジェクトは全て密結合で触れない状態に陥っていました… たぶん日本中、いや世界中がこうなってると思います。 決して

はじめに こんにちは、サーバーサイドエンジニアの佐野きよです。 最近、EC2 +Cron +Laravelで動いていたバッチサーバーをECSのタスクスケジュールへ移行しました。 その際に何点か注意したいポイントがあったので、同じ轍を踏まないようにこちらで共有します。 同様のことをしようとしている方の参考になりますと幸いです。 前提 クラウド:AWS フレームワーク:Laravel インフラ: EC2 (ECSタスクスケジュール化前) この記事で触れないこと ECSタスクスケジュール化の手順や方法 ECSのタスクスケジュールの仕組みや概要 なぜECSタスクスケジュールへ移行したのか EC2とCronによるバッチ処理はシンプルで実績のある構成ですが、運用を続ける中でいくつかの課題が顕在化してきました。 スケーラビリティの問題 バッチ処理の数や種類が増えるにつれて、特定の時間に処理が集中
業務中の出来事 新しいデータを読み込む際に、一度テーブル内の既存のデータをすべて削除し、再度登録するという仕様の箇所がありました。 その際、truncateを使用しようとして少し悩んだ部分があったため、メモとして記録します。Laravelでテーブル内のデータをすべて削除したいときにtable->truncate()を使用する場合の注意点 データベース操作において、テーブルのデータをすべて削除したい場合に、処理の早いtruncate()メソッドを使用したいときがあります。 しかし、このメソッドを使う際にはいくつかの注意点が存在します。 特に、トランザクションを使用してエラー処理を行う場合、truncate()は予期しない動作を引き起こす可能性があるため、注意が必要です。 truncate()メソッドの動作 まず、truncate()メソッドは、単にテーブルのデータを削除するだけでなく、テー

LaravelのStorageとpublicディレクトリの違いについてまとめた記事です。 自分としてはpublicにアクセスすると内部で勝手にStorageにアクセスしているかと思っていました。 ですが、どうも違うようです。 1. public ディレクトリとは? public/ は、Webブラウザから直接アクセスできる唯一のディレクトリです。たとえば、CSSファイル、JavaScriptファイル、画像などのフロントエンド用リソースを置く場所です。 特徴 URLから直接アクセスできる(例: /images/logo.png) 表に出しても良いものを置くLaravelのエントリーポイントである index.php もここにある 注意点セキュリティ的に、機密性の高いファイルは絶対に置かない 2. storage ディレクトリとは? storage/ は、アプリケーション内部で使用するファイ

Laravelでログイン機能のテストを、本番用DBに影響を与えずに実行するための手順です。 ✅ 1.phpunit.xmlでテスト用DBの設定を行うphpunit.xmlに以下の環境変数を追加します。これにより、テスト実行時はtest_dbに接続されます。 <php> <env name="APP_ENV" value="testing"/> <env name="DB_CONNECTION" value="mysql"/> <env name="DB_DATABASE" value="test_db"/> <env name="DB_HOST" value="db"/> <env name="DB_PORT" value="3306"/> <env name="DB_USERNAME" value="root"/> <env name="DB_PASSWORD" value="roo

{!! !!} を使わせるパッケージの消滅laravelcollective 主にどのような違いがあるのか spatie/laravel-html はメソッドチェーン 条件句を指定して属性を付与するかどうかを選択できる 分からないことがあれば公式ドキュメントで 7 割は解決する 公式ドキュメントだけでは分かりにくいこと select のグルーピング コレクションではダメな理由 モーダルを開くボタンは明示的に type="button" を指定しないとクリック時に遷移してしまう input が初期値とする値の優先順位 メソッドが GET の時(非バリデーションエラーの時)、クエリパラメータが初期値に反映されない form に対して 'enctype' => 'multipart/form-data' を設定したい File に disabled() が生えてないlaravelcollec
こんにちは。堀部です。Laravelのバージョンアップをする機会があったので、備忘のために手順をまとめたいと思います。2023年11月時点の最新バージョンであるLaravel10までの方法をまとめました。何かの参考になれば幸いです。Laravel5.8 → 6.Xへアップグレード 公式サイトにも アップグレードガイドがありますが、基本的にはcomposer.jsonを書き換えて対応します。 対応前 "require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", "laravel/framework": "5.8.*", "laravel/tinker": "^1.0" }, 対応後 "require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", "laravel/framework":

Blade Componentsとは データの受け渡し、Viewの表示などでControllerが肥大化してしまうのを防ぐためにある仕組み。 コンポーネントの機能を使うと、新しくコンポーネントクラスやBladeコンポーネントクラスを作って、機能を分け、そこにデータの受け渡しなどを任せることで、Controllerはreturn viewするだけで良くなり、負担が軽くなる。 またコンポーネント側を修正するとそのコンポーネントを使っているファイル全てに修正が反映されるのが便利。Bladeの種類と違いBlade Componentsを使わない場合(従来のBlade)Blade Componentsを利用しない場合は、@extend, @yield, @sectionといったディレクティブを使ってレイアウトを作成する。resources¥viewsの下にlayoutsフォルダを作成しapp.

環境 OS:Windows 10PHP: 8.1.2Laravel Framework: 8.81.0docker-compose: 1.29.2PHPUnit: 9.5.10MySQL: 8.0Laravel Sailを使用して、Laravelプロジェクトを立ち上げています。プロジェクトを立ち上げる部分は、こちらのドキュメントでご確認ください。 RefreshDatabaseDBの状態に影響されずテストする use RefreshDatabase;をしてあげると、 テストを実行する際に前後のDBの状態を考える必要がなくなります。 各テスト毎にDBをリフレッシュするため、まっさらな状態にしてくれるので、DBの状態を確認するアサーションである $this->assertDatabaseCount(...); $this->assertDatabaseHas(...); $

はじめに 筆者、テストというものの存在は上司から教わり、書き方も自分で調べながら、さぐりさぐりで書いてみたので、 この記事の書き方や説明が必ず正しいという保証はできない。 自分の備忘録的なものも兼ねての記事なので、参考程度に見て頂きたい。 テストとは何か 簡単に言えば、 このアプリ、本当にイメージした通りに動いてるのか? っていうのを、確認してくれるもの。 どういうことかと言うと、 ここでの表示はこれだ! ここではこの処理をして、こういう結果が帰ってくるんだ! というのを、あらかじめすべての処理について、テストに書いておく。 そうすることで、なにか不具合があっても、 「ここの表示、君のイメージと違うみたいだよ」 「ここの処理、君の思うようには動いてないよ」 という感じで、テスト君が教えてくれるということだ。 なぜテストを書くのか 例えば、複数人でなんかの開発をしてて、 「やったーー!!完成

はじめにLaravelでPHPUnitを使用する際に、テスト用のDB(MySQL)を 使用する方法について学んだことを備忘録として残します。 テスト用DBを使用することで、テスト時のRefreshDatabaseなどで 開発用DBの必要なデータも含め削除されてしまう、といったことを防ぎ 別環境のDBに影響を与えずテストを行うことができます。 環境PHP 8.2.7Laravel 10.22.0PHPUnit 10.3.3 設定手順database.phpへの設定 まず、Laravelのdatabase.phpのconnectionsにテスト用DBの設定を追加します。 'connections' => [ ... // テスト用 'mysql_test' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' =

Q. なぜ? A. ドキュメントにそう書いてある。 The command should not be run during local development as configuration options will frequently need to be changed during the course of your application's development. (意訳)アプリケーションの開発中には設定を頻繁に変更する必要があるので、ローカル開発環境ではこのコマンドは実行するべきではありません。 Q. そう書いてある、では納得できない! A. 一度php artisan config:cacheを実行すると、それ以降(キャッシュを消去しない限り)configディレクトリ配下の設定ファイルを修正するたびにphp artisan config:cacheを実行しなければ設

Unknown column type "timestamp" requested. Any Doctrine type that you use has to be registered with \ Doctrine\DBAL\Types\Type::addType(). You can get a list of all the known types with \Doctrine\DBAL\Ty pes\Type::getTypesMap(). If thiserror occurs duringdatabase introspection then you might have forgo tten to register alldatabase types for a Doctrine Type. Use AbstractPlatform#registerDoctrine

PHPのフレームワークであるLaravelでは、DBアクセスを行うのにEloquentやQueryBuilderという便利なモジュールがあります。 ですが、プロジェクトによってはLaravel以外のマイクロフレームワークや、フレームワークなしの環境だけども、ORマッパーのEloquentだけは使いという状況もあります。 そこで今回は、Laravelフレームワークを使わずに、Eloquentを利用する方法を説明します。LaravelとEloquentの関係 EloquentはLaravel向けののORマッパーライブラリとして有名ですが、Eloquent自体はLaravelと一緒に使わなくても、composerのilluminate/databaseという独立したパッケージとして提供されています。 ですので、illuminate/databaseパッケージだけを個別で取得すれば、Larave
【第4回】Composerを使ってお手軽アプリケーション開発本連載ではComposerで公開されているパッケージの中から、フレームワークを問わず汎用的に使えるライブラリをサンプルコードと共に紹介します。 今回はDBを扱う「Eloquent(Illuminate/Database)」というORMを紹介します。ORMとEloquentORMとは?ORMは「Object RelationalMapping (オブジェクト関係マッピング)」と呼ばれている、オプジェクト指向で書かれているプログラムから、オブジェクト指向ではないデータベースなどのデータをオプジェクト指向のように扱う手法のことを言います。 かみ砕いて説明すると、データベースをオブジェクト指向っぽく扱うためのクラス構造ということです。 例えば、 SELECT 'id', 'name', 'age' FROM users WHER

懇親会で集合写真を撮るBASE株式会社メンバーの様子 こんにちは!桜が満開になり、心浮き立つお花見シーズンですね。 さて、この度は、2023/03/23(木)~2023/03/25(土)に開催されたPHPerKaigi2023 にプラチナスポンサーとして協賛し、3名のメンバーが登壇しました。 今回は、登壇者 3 名からコメントと、会場の様子やセッションについてお届けします!PHP カンファレンス2023 とは2023/03/23(木)~2023/03/25(土)の 3 日間にわたってPHPerKaigi2023 が開催されました。 BASE はこれまでにも開催されているPHPerKaigi への登壇並びにスポンサードをコミュニティ貢献活動として行って参りました。 今回はプラチナスポンサーとして当カンファレンスに協賛しています。 プラチナスポンサー一覧の左下にBASE株式会社

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く