diff --git a/original-en/configuration.md b/original-en/configuration.md index b276078..1d94253 100644 --- a/original-en/configuration.md +++ b/original-en/configuration.md @@ -185,17 +185,31 @@ php artisan env:decrypt --force ## Accessing Configuration Values -You may easily access your configuration values using the global `config` function from anywhere in your application. The configuration values may be accessed using "dot" syntax, which includes the name of the file and option you wish to access. A default value may also be specified and will be returned if the configuration option does not exist: +You may easily access your configuration values using the `Config` facade or global `config` function from anywhere in your application. The configuration values may be accessed using "dot" syntax, which includes the name of the file and option you wish to access. A default value may also be specified and will be returned if the configuration option does not exist: + + use Illuminate\Support\Facades\Config; + + $value = Config::get('app.timezone'); $value = config('app.timezone'); // Retrieve a default value if the configuration value does not exist... $value = config('app.timezone', 'Asia/Seoul'); -To set configuration values at runtime, pass an array to the `config` function: +To set configuration values at runtime, you may invoke the `Config` facade's `set` method or pass an array to the `config` function: + + Config::set('app.timezone', 'America/Chicago'); config(['app.timezone' => 'America/Chicago']); +To assist with static analysis, the `Config` facade also provides typed configuration retrieval methods. If the retrieved configuration value does not match the expected type, an exception will be thrown: + + Config::string('config-key'); + Config::integer('config-key'); + Config::float('config-key'); + Config::boolean('config-key'); + Config::array('config-key'); + ## Configuration Caching diff --git a/original-en/eloquent-resources.md b/original-en/eloquent-resources.md index 05d38e8..2623c74 100644 --- a/original-en/eloquent-resources.md +++ b/original-en/eloquent-resources.md @@ -334,24 +334,6 @@ By default, your outermost resource is wrapped in a `data` key when the resource } ``` -If you would like to use a custom key instead of `data`, you may define a `$wrap` attribute on the resource class: - - +### Pause + +The `pause` function may be used to display informational text to the user and wait for them to confirm their desire to proceed by pressing the Enter / Return key: + +```php +use function Laravel\Prompts\pause; + +pause('Press ENTER to continue.'); +``` + -### Informational Messages +## Informational Messages The `note`, `info`, `warning`, `error`, and `alert` functions may be used to display informational messages: @@ -622,7 +634,7 @@ info('Package installed successfully.'); ``` -### Tables +## Tables The `table` function makes it easy to display multiple rows and columns of data. All you need to do is provide the column names and the data for the table: @@ -636,7 +648,7 @@ table( ``` -### Spin +## Spin The `spin` function displays a spinner along with an optional message while executing a specified callback. It serves to indicate ongoing processes and returns the callback's results upon completion: @@ -705,7 +717,7 @@ $progress->finish(); ``` -### Terminal Considerations +## Terminal Considerations #### Terminal Width @@ -718,7 +730,7 @@ If the length of any label, option, or validation message exceeds the number of For any prompts that accept the `scroll` argument, the configured value will automatically be reduced to fit the height of the user's terminal, including space for a validation message. -### Unsupported Environments and Fallbacks +## Unsupported Environments and Fallbacks Laravel Prompts supports macOS, Linux, and Windows with WSL. Due to limitations in the Windows version of PHP, it is not currently possible to use Laravel Prompts on Windows outside of WSL. diff --git a/original-en/queries.md b/original-en/queries.md index ce92e35..bab2ed2 100644 --- a/original-en/queries.md +++ b/original-en/queries.md @@ -380,6 +380,26 @@ You may use the `joinSub`, `leftJoinSub`, and `rightJoinSub` methods to join a q $join->on('users.id', '=', 'latest_posts.user_id'); })->get(); + +#### Lateral Joins + +> [!WARNING] +> Lateral joins are currently supported by PostgreSQL, MySQL >= 8.0.14, and SQL Server. + +You may use the `joinLateral` and `leftJoinLateral` methods to perform a "lateral join" with a subquery. Each of these methods receives two arguments: the subquery and its table alias. The join condition(s) should be specified within the `where` clause of the given subquery. Lateral joins are evaluated for each row and can reference columns outside the subquery. + +In this example, we will retrieve a collection of users as well as the user's three most recent blog posts. Each user can produce up to three rows in the result set: one for each of their most recent blog posts. The join condition is specified with a `whereColumn` clause within the subquery, referencing the current user row: + + $latestPosts = DB::table('posts') + ->select('id as post_id', 'title as post_title', 'created_at as post_created_at') + ->whereColumn('user_id', 'users.id') + ->orderBy('created_at', 'desc') + ->limit(3); + + $users = DB::table('users') + ->joinLateral($latestPosts, 'latest_posts') + ->get(); + ## Unions diff --git a/original-en/rate-limiting.md b/original-en/rate-limiting.md index 5d7e197..95356ed 100644 --- a/original-en/rate-limiting.md +++ b/original-en/rate-limiting.md @@ -66,20 +66,24 @@ If you would like to manually interact with the rate limiter, a variety of other return 'Too many attempts!'; } - RateLimiter::hit('send-message:'.$user->id); + RateLimiter::increment('send-message:'.$user->id); // Send message... -Alternatively, you may use the `remaining` method to retrieve the number of attempts remaining for a given key. If a given key has retries remaining, you may invoke the `hit` method to increment the number of total attempts: +Alternatively, you may use the `remaining` method to retrieve the number of attempts remaining for a given key. If a given key has retries remaining, you may invoke the `increment` method to increment the number of total attempts: use Illuminate\Support\Facades\RateLimiter; if (RateLimiter::remaining('send-message:'.$user->id, $perMinute = 5)) { - RateLimiter::hit('send-message:'.$user->id); + RateLimiter::increment('send-message:'.$user->id); // Send message... } +If you would like to increment the value for a given rate limiter key by more than one, you may provide the desired amount to the `increment` method: + + RateLimiter::increment('send-message:'.$user->id, amount: 5); + #### Determining Limiter Availability @@ -93,7 +97,7 @@ When a key has no more attempts left, the `availableIn` method returns the numbe return 'You may try again in '.$seconds.' seconds.'; } - RateLimiter::hit('send-message:'.$user->id); + RateLimiter::increment('send-message:'.$user->id); // Send message... diff --git a/original-en/strings.md b/original-en/strings.md index 01855fd..a940880 100644 --- a/original-en/strings.md +++ b/original-en/strings.md @@ -559,6 +559,10 @@ The `Str::isUrl` method determines if the given string is a valid URL: // false +The `isUrl` method considers a wide range of protocols as valid. However, you may specify the protocols that should be considered valid by providing them to the `isUrl` method: + + $isUrl = Str::isUrl('http://example.com', ['http', 'https']); + #### `Str::isUlid()` {.collection-method} @@ -1758,6 +1762,10 @@ The `isUrl` method determines if a given string is a URL: // false +The `isUrl` method considers a wide range of protocols as valid. However, you may specify the protocols that should be considered valid by providing them to the `isUrl` method: + + $result = Str::of('http://example.com')->isUrl(['http', 'https']); + #### `isUuid` {.collection-method} diff --git a/original-en/telescope.md b/original-en/telescope.md index 2222ba8..17d8501 100644 --- a/original-en/telescope.md +++ b/original-en/telescope.md @@ -56,6 +56,8 @@ php artisan telescope:install php artisan migrate ``` +Finally, you may access the Telescope dashboard via the `/telescope` route. + #### Migration Customization diff --git a/original-en/validation.md b/original-en/validation.md index c4b64ed..bad1763 100644 --- a/original-en/validation.md +++ b/original-en/validation.md @@ -1245,6 +1245,28 @@ The `Enum` rule is a class based rule that validates whether the field under val 'status' => [Rule::enum(ServerStatus::class)], ]); +The `Enum` rule's `only` and `except` methods may be used to limit which enum cases should be considered valid: + + Rule::enum(ServerStatus::class) + ->only([ServerStatus::Pending, ServerStatus::Active]); + + Rule::enum(ServerStatus::class) + ->except([ServerStatus::Pending, ServerStatus::Active]); + +The `when` method may be used to conditionally modify the `Enum` rule: + +```php +use Illuminate\Support\Facades\Auth; +use Illuminate\Validation\Rule; + +Rule::enum(ServerStatus::class) + ->when( + Auth::user()->isAdmin(), + fn ($rule) => $rule->only(...), + fn ($rule) => $rule->only(...), + ); +``` + #### exclude diff --git a/translation-ja/configuration.md b/translation-ja/configuration.md index ed569bb..3e84aba 100644 --- a/translation-ja/configuration.md +++ b/translation-ja/configuration.md @@ -185,17 +185,31 @@ php artisan env:decrypt --force ## 設定値へのアクセス -アプリケーションのどこからでもグローバルの`config`関数を使用し、設定値へ簡単にアクセスできます。設定値はファイルとオプションの名前を含む「ドット」記法を使いアクセスします。デフォルト値も指定でき、設定オプションが存在しない場合に、返されます。 +アプリケーションのどこからでも、`Config`ファサードと`config`グローバル関数を使い、簡単に設定値にアクセスできます。設定値には「ドット」構文を使いアクセスでき、アクセスしたいファイル名とオプション名を指定します。デフォルト値を指定することもでき、その設定オプションが存在しない場合に返します。 + + use Illuminate\Support\Facades\Config; + + $value = Config::get('app.timezone'); $value = config('app.timezone'); // 設定値が存在しない場合、デフォルト値を取得する $value = config('app.timezone', 'Asia/Seoul'); -実行時に設定値をセットするには、`config`関数へ配列で渡してください。 +実行時に設定値をセットするには、`Config`ファサードの`set`メソッドを呼び出すか、`config` 関数に配列を渡します。 + + Config::set('app.timezone', 'America/Chicago'); config(['app.timezone' => 'America/Chicago']); +静的解析を支援するため、`Config`ファサードは型付き設定値取得メソッドも提供しています。取得した設定値が期待している型と一致しない場合は、例外を投げます。 + + Config::string('config-key'); + Config::integer('config-key'); + Config::float('config-key'); + Config::boolean('config-key'); + Config::array('config-key'); + ## 設定キャッシュ diff --git a/translation-ja/eloquent-resources.md b/translation-ja/eloquent-resources.md index 358104c..69b462f 100644 --- a/translation-ja/eloquent-resources.md +++ b/translation-ja/eloquent-resources.md @@ -334,24 +334,6 @@ php artisan make:resource UserCollection } ``` -`data`の代わりにカスタムキーを使用したい場合は、リソースクラスに`$wrap`属性を定義します。 - - +### 一時停止 + +`pause`関数は、ユーザーへ情報テキストを表示し、Enter/Returnキーが押されるのを待つことにより、ユーザーの続行の意思を確認するために使用します。 + +```php +use function Laravel\Prompts\pause; + +pause('Press ENTER to continue.'); +``` + -### 情報メッセージ +## 情報メッセージ `note`、`info`、`warning`、`error`、`alert`関数は、情報メッセージを表示するために使用します。 @@ -622,7 +634,7 @@ info('Package installed successfully.'); ``` -### テーブル +## テーブル `table`関数を使うと、複数の行や列のデータを簡単に表示できます。指定する必要があるのは、カラム名とテーブルのデータだけです。 @@ -636,7 +648,7 @@ table( ``` -### スピン +## スピン `spin`関数は、指定したコールバックを実行している間、オプションのメッセージとともにスピナーを表示します。これは進行中の処理を示す役割を果たし、完了するとコールバックの結果を返します。 @@ -705,7 +717,7 @@ $progress->finish(); ``` -### ターミナルの考察 +## ターミナルの考察 #### ターミナルの横幅 @@ -718,7 +730,7 @@ $progress->finish(); `scroll`引数を受け入れるプロンプトの場合、設定済み値は、検証メッセージ用のスペースを含めて、ユーザーの端末の高さに合わせて自動的に縮小されます。 -### 未サポートの環境とフォールバック +## 未サポートの環境とフォールバック Laravel PromptsはmacOS、Linux、WindowsのWSLをサポートしています。Windows版のPHPの制限により、現在のところWSL以外のWindowsでは、Laravel Promptsを使用できません。 diff --git a/translation-ja/queries.md b/translation-ja/queries.md index d31f176..43ec775 100644 --- a/translation-ja/queries.md +++ b/translation-ja/queries.md @@ -380,6 +380,26 @@ DB::table('users')->where('active', false) $join->on('users.id', '=', 'latest_posts.user_id'); })->get(); + +#### ラテラルJoin + +> [!WARNING] +> 現在、ラテラルJoinはPostgreSQL、MySQL8.0.14以上、SQL Serverでサポートされています。 + +`joinLateral` メソッドと `leftJoinLateral` メソッドを使用すると、サブクエリとの「ラテラル結合」を行えます。これらのメソッドはそれぞれ2つの引数を取ります。サブクエリとそのテーブルエイリアスです。結合条件は、指定するサブクエリの中で、`where`節で指定する必要があります。ラテラル結合は行ごとに評価され、サブクエリ外の列を参照できます。 + +この例では、ユーザーのコレクションと同時に、各ユーザーの最新ブログ記事を3つ取得しています。各ユーザーは結果セットへ最大3つの行を生成できます: 最新ブログ投稿それぞれに対して1つずつです。結合条件は、サブクエリ内の`whereColumn`節で指定し、現在のユーザー行を参照しています。 + + $latestPosts = DB::table('posts') + ->select('id as post_id', 'title as post_title', 'created_at as post_created_at') + ->whereColumn('user_id', 'users.id') + ->orderBy('created_at', 'desc') + ->limit(3); + + $users = DB::table('users') + ->joinLateral($latestPosts, 'latest_posts') + ->get(); + ## UNION diff --git a/translation-ja/rate-limiting.md b/translation-ja/rate-limiting.md index ff0d028..3dedfe2 100644 --- a/translation-ja/rate-limiting.md +++ b/translation-ja/rate-limiting.md @@ -11,7 +11,7 @@ Laravelには、簡単に使用できるレート制限の抽象化機能があり、アプリケーションの[cache](/docs/{{version}}/cache)と連携して、指定した時間帯のアクションを制限する簡単な方法を提供します。 -> [!NOTE] +> [!NOTE] > 受信HTTPリクエストのレートを制限したい場合は、[レート制限ミドルウェアのドキュメント](/docs/{{version}}/routing#rate-limiting)を参照してください。 @@ -66,20 +66,24 @@ Laravelには、簡単に使用できるレート制限の抽象化機能があ return 'Too many attempts!'; } - RateLimiter::hit('send-message:'.$user->id); + RateLimiter::increment('send-message:'.$user->id); // メッセージ送信処理… -他にも、`remaining`メソッドを使って、指定キーの残りの試行回数を取得することも可能です。指定キーに再試行回数が残っている場合は、`hit`メソッドを呼び出して総試行回数を増やせます。 +他にも、`remaining`メソッドを使って、指定キーの残りの試行回数を取得することも可能です。指定キーに再試行回数が残っている場合は、`increment`メソッドを呼び出して総試行回数を増やせます。 use Illuminate\Support\Facades\RateLimiter; if (RateLimiter::remaining('send-message:'.$user->id, $perMinute = 5)) { - RateLimiter::hit('send-message:'.$user->id); + RateLimiter::increment('send-message:'.$user->id); // メッセージ送信処理… } +指定するレートリミッターキーの値を1以上増やしたい場合は、`increment`メソッドへ希望する量を指定してください。 + + RateLimiter::increment('send-message:'.$user->id, amount: 5); + #### 使用可能時間の判断 @@ -93,7 +97,7 @@ Laravelには、簡単に使用できるレート制限の抽象化機能があ return 'You may try again in '.$seconds.' seconds.'; } - RateLimiter::hit('send-message:'.$user->id); + RateLimiter::increment('send-message:'.$user->id); // メッセージ送信処理… diff --git a/translation-ja/strings.md b/translation-ja/strings.md index 6b6892d..e507466 100644 --- a/translation-ja/strings.md +++ b/translation-ja/strings.md @@ -559,6 +559,10 @@ Laravelには、文字列値を操作する様々な関数があります。こ // false +`isUrl` メソッドは幅広いプロトコルを有効とみなします。しかし、`isUrl`メソッドへ有効なプロトコルを指定することもできます。 + + $isUrl = Str::isUrl('http://example.com', ['http', 'https']); + #### `Str::isUlid()` {.collection-method} @@ -1758,6 +1762,10 @@ Fluent文字列は読み書きしやすい(fluent)、オブジェクト指 // false +`isUrl`メソッドは幅広いプロトコルを有効とみなします。しかし、`isUrl`メソッドへ有効なプロトコルを指定することもできます。 + + $result = Str::of('http://example.com')->isUrl(['http', 'https']); + #### `isUuid` {.collection-method} diff --git a/translation-ja/telescope.md b/translation-ja/telescope.md index 6b5d125..897af83 100644 --- a/translation-ja/telescope.md +++ b/translation-ja/telescope.md @@ -56,6 +56,8 @@ php artisan telescope:install php artisan migrate ``` +これで、`/telescope`により、Telescopeダッシュボードへアクセスできます。 + #### マイグレーションのカスタマイズ diff --git a/translation-ja/validation.md b/translation-ja/validation.md index f374ce9..311c26a 100644 --- a/translation-ja/validation.md +++ b/translation-ja/validation.md @@ -1245,6 +1245,28 @@ PHPの`filter_var`関数を使用する`filter`バリデータは、Laravelに 'status' => [Rule::enum(ServerStatus::class)], ]); +`Enum`ルールの`only`メソッドと`except`メソッドを使用し、有効な列挙ケースを制限できます。 + + Rule::enum(ServerStatus::class) + ->only([ServerStatus::Pending, ServerStatus::Active]); + + Rule::enum(ServerStatus::class) + ->except([ServerStatus::Pending, ServerStatus::Active]); + +`when`メソッドは、`Enum`ルールを条件付きで変更するために使います。 + +```php +use Illuminate\Support\Facades\Auth; +use Illuminate\Validation\Rule; + +Rule::enum(ServerStatus::class) + ->when( + Auth::user()->isAdmin(), + fn ($rule) => $rule->only(...), + fn ($rule) => $rule->only(...), + ); +``` + #### exclude