PCS開発チーム

フィルター
Laravel Tips bot

laravel/framework v10.48.9

https://github.com/laravel/framework/releases/tag/v10.48.9

以下は、Laravelの最新リリースノートの要約です:

  1. カーソルページネーションを複数のユニオンとwhere句と共に使用する際のバインディング順序の問題を修正しました(https://github.com/laravel/framework/pull/50884)。
  2. ユニオンとカラムエイリアスを使用したカーソルページネーションの問題を修正しました(https://github.com/laravel/framework/pull/50882)。
  3. UrlGeneratorにおけるNullパラメータの非推奨警告に対処しました(https://github.com/laravel/framework/pull/51148)。
PCS開発チーム

Laravel11で新規プロジェクト作成後はテスト用のデータベース設定が必須

Laravel11でSQLiteがデフォルトに変わったけどphpunit.xmlのインメモリSQLiteは無効なまま。何も設定しないままだとテストでSQLiteのデータベースが壊される。

// phpunit.xml

        <!-- <env name="DB_CONNECTION" value="sqlite"/> -->
        <!-- <env name="DB_DATABASE" value=":memory:"/> -->

再現手順

laravel new laravel11-sqlite --breeze --stack=blade --phpunit --database=sqlite --dark
cd laravel11-sqlite
php artisan db:seed
   INFO  Seeding database.

tinkerで見るとこの時点ではseederで作ったUserが存在している。

php artisan tinker
> User::first()
= App\Models\User {#5097
    id: 1,
    name: "Test User",

テスト実行後に見るとUserが消されている。

php artisan test

php artisan tinker
> User::first()
= null

テスト時にもdatabase/database.sqliteが使われて上書きされた。

流石にこれは変なのでいずれ修正されるかもしれないけどそれまでは自分で対応。

        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>

Sailを使っててもインメモリSQLiteに変えたほうがいい。
SQLiteでは使えない機能があって本物のMySQLなどを使ったテストが必要なプロジェクトはあるけどそんな規模のプロジェクトなら勝手に判断できる。
大半のLaravelプロジェクトではインメモリSQLiteで十分。

Laravel Tips bot

livewire/livewire v3.4.11

https://github.com/livewire/livewire/releases/tag/v3.4.11

このリリースノートでは、Livewireのいくつかの変更点と修正が紹介されています。主な内容は以下の通りです:

  • ドキュメントやコード内のいくつかのバグ修正(例:セミコロンの追加、未定義キーの修正、プログレスバーのアニメーション改善など)。
  • ディレクティブAPIに$wireを追加し、カスタムディレクティブのリスナー登録を行わないように変更。
  • PHPの既定のクラスとの競合を解消し、バリデーションユーティリティのドキュメントを明確化。
  • フォームのバリデーションエラーの持続性を修正。
  • コンポーネントメソッド$this->pull()やテストヘルパーwithoutLazyLoading()を追加。
  • 古いファイルのクリーンアップ設定を追加。
  • ダークモードでのREADMEロゴの表示問題を修正。
  • 新しいコントリビューターがいくつかのプルリクエストで初めて貢献。

これらの変更は、Livewireの機能強化とユーザーエクスペリエンスの向上を目的としています。全ての変更内容は、指定されたGitHubの比較ページで確認できます。

Laravel Tips bot

laravel/breeze v2.0.3

https://github.com/laravel/breeze/releases/tag/v2.0.3

  • @javadihugoによるメール認証テストのリファクタリングが行われました(https://github.com/laravel/breeze/pull/379)。
  • @jessarcherがReactのTypeScriptエラーを修正しました(https://github.com/laravel/breeze/pull/381)。
  • @taylorotwellにより、ウェルカムビューが削除されました(https://github.com/laravel/breeze/commit/86cccf3d7ed843fc60738963ed2ed800eaf314d9 および https://github.com/laravel/breeze/commit/0d97c710d25e69916b84eb8ff4b630c838709c11)。
Laravel Tips bot

laravel/framework v11.5.0

https://github.com/laravel/framework/releases/tag/v11.5.0

以下は、Laravelのリリースノートの要約です:

  • Laravel 11.xでは、make:traitmake:interfaceコマンドに名前空間が追加されました。
  • URLをクエリパラメータと共に生成する機能が追加されました。
  • 匿名ブロードキャスティングが導入されました。
  • カーソルページネーションを使用する際のバインディング順序の問題が修正されました。
  • レートリミッタークラスにデクリメントメソッドが追加されました。
  • モデルのレプリケーション時にlaravel_through_keyを除外する修正が行われました。
  • 静的ルールメソッドにenum型が追加されました。
  • ハッシュ化されたキャストを使用する際の他のハッシュ実装のサポートが修正されました。
  • whereInルート制約でのenumのサポートが追加されました。
  • Bladeのパフォーマンスが向上しました。
  • データベースのカラム名を変更する際の問題が修正されました。
  • GenericUserがハードコードされたカラム名の代わりにgetAuthPasswordNameを使用するように変更されました。

これらの変更は、Laravelの機能拡張とパフォーマンス向上に寄与しています。

Laravel Tips bot

では、Laravel公式ドキュメントの「ルーティング」について説明します。

Laravelにおけるルーティングは、アプリケーションのURLとその処理を結びつける役割を持っています。ユーザーがブラウザで特定のURLにアクセスすると、Laravelのルート定義に基づいて適切なコントローラとメソッドが呼び出され、その結果がユーザーに返されます。

ルーティングの設定は、通常、routesディレクトリ内のファイルに記述されます。例えば、ウェブアプリケーションのルーティングはroutes/web.phpに設定され、APIのルーティングはroutes/api.phpに設定されます。

基本的なルートの記述方法は以下のようになります:

Route::get('foo', function () {
    return 'Hello World';
});

このコードは、ユーザーがfooというURLにアクセスした時に「Hello World」を表示するというシンプルなルート定義です。getメソッドはHTTPのGETリクエストを示し、第一引数のfooはURLのパス、第二引数のクロージャーはそのURLにアクセスされたときに実行される処理を記述します。

Laravelでは他にもさまざまなHTTPメソッド(POST, PUT, DELETE など)や、パラメータを含む複雑なルーティング、ミドルウェアを使用したルートの拡張など、多岐にわたるルーティング設定が可能です。これにより、柔軟かつ強力なウェブアプリケーション開発をサポートしています。

ルーティングはLaravel開発の基本的な部分であり、上手く設計することでアプリケーションの保守性や拡張性が向上します。

PCS開発チーム

Ubuntuへのnode.jsのインストール方法がまた変わっている

ローカルでは頻繁にインストールするわけではないから気付かない。
nodeのバージョンアップが必要になってインストールする時は常にここを確認。
https://github.com/nodesource/distributions

Laravel Tips bot

laravel/framework v11.4.0

https://github.com/laravel/framework/releases/tag/v11.4.0

Laravelの最新リリースノートの要約は以下の通りです:

  • APCキャッシュ関連の古いapc_*関数が削除されました。
  • LivewireのWire Booleanスタイルディレクティブが使用可能になりました。
  • 新たにExceptionsファサードが導入されました。
  • afterQueryフックが追加され、SQL Serverを使用時のテスト不具合が修正されました。
  • 計算列が誤ったテーブルにマッピングされる問題が修正されました。
  • 文字列タイトルのテストが改善されました。
  • データベース接続を確認する前に適用する修正が行われました。
  • orderByRaw()cursorPaginate()の前に使用する際のエラーが修正されました。
  • RequiredIfDeclinedバリデーションルールが追加されました。
  • mapIntoコレクションメソッドでenumのサポートが追加されました。
  • 数値キーを使用する際のプロンプトのフォールバック戻り値の問題が修正されました。
  • Enumルートバインディングでintバックドenumのサポートが追加されました。
  • キャッシュリポジトリのイベントを無効にする設定が追加されました。
  • ジョブの表示名設定がスケジュールによって尊重されるようになりました。
  • コメントのタイポ修正、ドキュメントブロックの修正が行われました。
  • Httpメソッドに@throws ConnectionExceptionタグが追加され、IDEサポートが向上しました。
  • テスト用にtextareaプロンプトのフォールバックとアサーションテストが追加されました。
  • LazyCollectionthrottleメソッドが追加されました。
  • SyncQueueafter_commit設定を考慮するようになりました。
  • コンテキストヘルパーが常に$key値を要求する問題が修正されました。
  • expectsChoiceアサーションでmultiselectプロンプトがオプショナルになる問題が修正されました。

これらの変更は、Laravelの機能強化とバグ修正に寄与しています。

Laravel Tips bot

laravel/framework v10.48.8

https://github.com/laravel/framework/releases/tag/v10.48.8

  • orderByRaw()を使用後にcursorPaginate()を使用する際のエラーを修正しました。(https://github.com/laravel/framework/pull/51023)
  • データベース層の修正が行われました。(https://github.com/laravel/framework/pull/49787)
PCS開発チーム

bootstrapからtailwindへ

大量のLaravel11への更新作業が落ち着いたので次はcssにbootstrap使ってるプロジェクトのtailwind化。
bootstrapってことはLaravel7以前に作られている。Laravel11までの更新はずっとしてるけどcssはそのままだった。
cssの変更は大変なので基本的には避けたほうがいい。

今回作業するのも1日で終わる程度の小規模プロジェクトだから可能。

  • breezeは使わないけどbreezeから使えそうなファイルをコピー。
  • @extends()を使った昔のレイアウトからBladeコンポーネントのレイアウトに変更。
  • すべてのhtmlを書き換える。
Laravel Tips bot

Use Route Model Binding to automatically resolve Eloquent models in your routes. This simplifies retrieving records and enhances code readability. For instance, instead of manually fetching a user in your controller like User::findOrFail($id), simply type-hint the model in the route's method, and Laravel automatically injects the corresponding instance.

// In your web.php or api.php
Route::get('/user/{user}', function (App\Models\User $user) {
    return $user;
});

This approach automatically handles the model lookup and 404 response if the item is not found, making your controllers cleaner and more focused on business logic.

PCS開発チーム

Laravel11への更新完了

関わってるところ全部で終わった。
なるべく減らしたり効率化してるけどそれでもまだ多い。

スリム化は

  • 歴史が浅くて小規模ならさっとスリム化しておく。
  • スリム化するのが大変そうならしない。
Laravel Tips bot

laravel/jetstream v5.0.4

https://github.com/laravel/jetstream/releases/tag/v5.0.4

このリリースノートは、Laravel Jetstreamに関連する変更を示しています。具体的には、@taylorotwell による「[5.x] Install API optionally」というプルリクエスト(https://github.com/laravel/jetstream/pull/1473)が取り消されたことを示しています。つまり、APIをオプションとしてインストールする機能が一時的に導入された後、何らかの理由でこの変更が元に戻されたことを意味します。

Laravel Tips bot

laravel/framework v11.3.1

https://github.com/laravel/framework/releases/tag/v11.3.1

  • displayName()によって設定されたジョブの名前がスケジュールによって尊重されるようになりました。(@SCIFによる貢献)
  • Testing\PendingCommand.phpConditionableトレイトが追加されました。(@tobz-nzによる貢献)
  • route:listを複数の列/要因でコンマを使用してソートできるようになりました。(@fredbradleyによる貢献)
  • BelongsToManyeachByIdchunkByIdDescが追加されました。(@lonnylotによる貢献)
Laravel Tips bot

laravel/framework v10.48.7

https://github.com/laravel/framework/releases/tag/v10.48.7

このリリースノートは、クエリビルダーのメソッドに関するさらなる修正が行われたことを示しています。これらの修正は、@taylorotwellによって実施され、GitHubのコミット(95ef230339b15321493a08327f250c0760c95376)で確認できます。