0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録:2025/10/29】chunkById(200, ...)、Storage::disk('s3')、xxx::class

Posted at

はじめに

自分が理解できていない部分を整理しながら、知識を少しずつ深めていくことを目的にこの記事を書いています。

そのため、内容の中には誤りが含まれている可能性もありますが、その点はご容赦ください。

間違いなどがあれば、ぜひコメントなどで教えていただけると嬉しいです!🙇

今日整理していく内容

  • chunkById(200, ...)
  • Storage::disk('s3')
  • xxx::class

chunkById(200, ...)

これはまだ理解できていない部分が多く、雰囲気で使ってしまっている気がしたので整理していきます!

簡単に言うと、データを一度に大量に取得せず、指定した件数ずつ分割して処理するメソッドのようです。

簡単なサンプルコードです:

->chunkById(200, function ($rows) use ($modelClass) {
    // 200件ずつ処理
});

1回に200件ずつデータベースから取得して処理しています。全件を一気に読むとメモリが足りなくなるため、分割(チャンク)して処理するテクニックのようですね。

ここでの $rows は200件分のレコードの集まりで、use はクロージャ(無名関数)に外部の変数を渡すための構文です。

今の案件ではあまり使っていませんが、今回使ってPRを出してみようと思います!笑

Storage::disk('s3')

これはなんとなく理解できています!

サンプルコード:

use Illuminate\Support\Facades\Storage;

Storage::disk('s3')->put('uploads/test.txt', 'Hello S3!');

Laravelのファイルストレージ機能(Storageファサード)を使って、S3やローカルなどの保存先を指定する構文です。

ここでは put() でファイルをアップロードしていますが、get(), delete(), exists() なども利用できます。

xxx::class

これはちょっと説明不足だったので、実際のコードを見たほうが早いですね。

use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);

::class は、クラス名を文字列として取得するPHPの構文です。これを使うと、クラス名を文字列で直接書かずに済みます。

つまり、

UserController::class

は内部的に、

"App\\Http\\Controllers\\UserController"

という文字列に展開されます。

クラス名を直接文字列で書かないことで、リファクタリングやIDE補完がしやすくなります。

まとめ

ここまで読んでいただきありがとうございました!

今回の記事では、

  • chunkById(200, ...)
  • Storage::disk('s3')
  • xxx::class

について整理しました。

今までなんとなく使っていた部分を改めて調べてみると、仕組みや意図が少しずつ理解できてきました。引き続きドキュメントを読みながら、しっかりと理解を深めていきたいと思います!💪

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?