LaravelでURLでUUIDを使う方法
このポストは最初に出版されたmy website . 更新のためにそれをチェックしてください.
インマイprevious post , セキュリティやその他の問題により、なぜデフォルトのインクリメントIDを公開してはいけないのかを説明しました.幸いにも、この問題のいくつかの解決策があります:スラグとUUID.
場合は、スラグについての詳細を読む場合は、することができますread more それについて.
このポストでは、私はあなたがどのようにRuavavelでUUIDを構成することができるかを示すつもりです.以下のようなURLを取得します.
移動
まず、Aを加える必要があります
モデル
次に、モデル(例えばPOST)が作成されるたびに、UUIDを自動的に割り当てます.我々はそれを行うことができます
工場
あなたがすぐにテストモデルを作成するモデル工場を使用している場合は、それらに何かを追加する必要はありません
ルーティング
最後のステップはルートファイルを更新することです.あなたが使うたびにRoute Model Binding あなたの
URL
URLを使用する場合は、あなたのルートをどこに更新する必要があります.例えば、
あなたが使っているならば
結論
あなたが見ることができるように、それは非常に簡単UUIDを使用して、あなたのインクリメントIDを非表示にララベルを使用します.私はあなたがこのポストが好きであることを望みます、そして、あなたがしたならば、あなたは下記の私の会報を購読することができます.
インマイprevious post , セキュリティやその他の問題により、なぜデフォルトのインクリメントIDを公開してはいけないのかを説明しました.幸いにも、この問題のいくつかの解決策があります:スラグとUUID.
場合は、スラグについての詳細を読む場合は、することができますread more それについて.
このポストでは、私はあなたがどのようにRuavavelでUUIDを構成することができるかを示すつもりです.以下のようなURLを取得します.
http://www.example.org/orders/065e9fb3-6bec-494c-9917-4ab8e71750d4
http://www.example.org/users/d3835dda-e08f-4ed5-baff-756d62a749b2
http://www.example.org/images/avatar-d54a923b-c5d4-4294-8033-a221a57ef361.jpg
移動
まず、Aを加える必要があります
uuid
移行中の列.ララベルはUUID column 利用できる利用可能.// database/migrations/create_posts_table.php
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->uuid('uuid')->unique(); // <!-- Add the UUID column in your migration
$table->string('title');
$table->text('body');
$table->timestamps();
});
モデル
次に、モデル(例えばPOST)が作成されるたびに、UUIDを自動的に割り当てます.我々はそれを行うことができます
boot
モデルのモデル// app/Models/Post.php
use Illuminate\Support\Str;
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->uuid = (string) Str::uuid();
});
}
工場
あなたがすぐにテストモデルを作成するモデル工場を使用している場合は、それらに何かを追加する必要はありません
boot
メソッドは、ファクトリを使用するときに実行されます.ルーティング
最後のステップはルートファイルを更新することです.あなたが使うたびにRoute Model Binding あなたの
routes/web.php
ファイル追加:uuid
最後に// routes/web.php
Route::get('/posts/{post:uuid}', [PostController::class, 'show'])
->name('posts.show');
今ラーラベルは自動的にルーティングのUUID列を使用します.URL
URLを使用する場合は、あなたのルートをどこに更新する必要があります.例えば、
// resources/views/posts/index.blade.php
<ul>
@foreach($posts as $post)
<li>
<a href="{{ url('/posts/' . $post->uuid) }}">
{{ $post->title }}
</a>
</li>
@endforeach
</ul>
route
ヘルパーあなたが使っているならば
route
ヘルパーメソッドは、何かを変更する必要はありません!例えば、// resources/views/posts/index.blade.php
<ul>
@foreach($posts as $post)
<li>
<a href="{{ route('posts.show', $post) }}">
{{ $post->title }}
</a>
</li>
@endforeach
</ul>
結論
あなたが見ることができるように、それは非常に簡単UUIDを使用して、あなたのインクリメントIDを非表示にララベルを使用します.私はあなたがこのポストが好きであることを望みます、そして、あなたがしたならば、あなたは下記の私の会報を購読することができます.
Reference
この問題について(LaravelでURLでUUIDを使う方法), 我々は、より多くの情報をここで見つけました https://dev.to/jeroenvanrensen/how-to-use-uuids-in-urls-in-laravel-1ja7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol