ラーラヴエルの最初の雄弁な関係
6071 ワード
ep24@Laracastsあなたの最初の雄弁な関係
このポストはシリーズの一部です.
私たちの次の目標は、私たちのブログの記事にカテゴリを割り当てることですBlog Project . 私たちはブログのアーカイブ上のカテゴリ名とポストタイトルの下の単一のポストページを表示します.
私たちは既に
それで、我々は移動とモデルを生成する必要があります
フィールドを追加する
空の配列を
私たちはすべてのポストにカテゴリーIDを割り当てました
に
関連するモデルにアクセスする方法?
今私たちは
あなたのブレードの更新は、各投稿タイトルの下に関連するカテゴリを表示するテンプレート.
ブログプロジェクトのすべての変更を見るには、Githubコミットを参照してくださいEp#24 Your First Eloquent Relationship
.
このポストはシリーズの一部です.
私たちの次の目標は、私たちのブログの記事にカテゴリを割り当てることですBlog Project . 私たちはブログのアーカイブ上のカテゴリ名とポストタイトルの下の単一のポストページを表示します.
私たちは既に
posts
我々のポストのためのテーブル.今、私たちはカテゴリーの別のテーブルが必要になります.つのテーブル間の関係を作ることができます.各エントリには、割り当てられたカテゴリIDがあります.それで、我々は移動とモデルを生成する必要があります
Category
. つの別々のコマンドでそれらを生成できますphp artisan make:model Category
php artisan make:migration categories
または1つのコマンドでphp artisan make:model Category -m
ここで-m
コマンドのフラグはモデルと一緒に移動するためのものです.フィールドを追加する
title
and slug
カテゴリマイグレーションのカテゴリスキーマに.を追加し、category_id
外部キー$table->foreignId("category_id");
にposts
移行移動を実行するphp artisan migrate:fresh
. ブートアップティンカーphp artisan tinker
そして、あなたのcategories
表.use App\Models\Category;
$c = new Category;
$c->title = "Personal";
$c->slug = "personal";
$c->save();
他の2つのカテゴリの上記のコマンドを繰り返しますWork
and Hobbies
.空の配列を
$guarded
我々の財産Post
モデルを使用して投稿を作成できますMass Assignment
.use App\Models\Post;
$post = new Post;
$post->create(["title" => "Just a personal post", "slug" => "just-a-personal-post", "excerpt" => "lorem ipsum is simply....", "body" => "Lorem ipsum is simply a dummy text...", "category_id" => 1]);
同様に、Work
and Hobbies
それぞれのカテゴリーIDを割り当てることによるカテゴリー.私たちはすべてのポストにカテゴリーIDを割り当てました
$post->category
? nope、まだ、我々は我々に我々の雄弁な関係を加えなかったのでPost
モデルまだ.The $post->category
はnull
代わりに.に
Post
モデル、メソッドを追加category()
と適切な関係を返します.public function category() {
return $this->belongsTo(Category::class);
}
我々はbelongsTo()
私たちの場合、カテゴリには多くの投稿がありますが、投稿は1つのカテゴリに割り当てられます.関連するモデルにアクセスする方法?
今私たちは
Category
関係Post
モデル、それは時間のアクセスのポストの関連カテゴリです.ここの潜在的混乱は、方法として関連モデルにアクセスしようとしているかもしれません$post->category()
, を返します.Illuminate\Database\Eloquent\Relations\BelongsTo {#4351}
モデルインスタンスの代わりにApp\Models\Category
. したがって、メソッドの代わりにプロパティとしてアクセスします.use App\Models\Post;
$post = Post::first();
$post->category;
そして、それはカテゴリーモデルインスタンスを返します>>> $post->category;
=> App\Models\Category {#3560
id: 1,
title: "Personal",
slug: "personal",
created_at: "2021-12-15 16:44:33",
updated_at: "2021-12-15 16:44:33",
}
>>>
これで関連カテゴリーのタイトルにアクセスできます$post->category->title
返り値Personal
上記の場合.あなたのブレードの更新は、各投稿タイトルの下に関連するカテゴリを表示するテンプレート.
<p><a href="#">{{ $post->category->title }}</a></p>
ここでは、私たちはN+1
別のエピソードで話し合う問題.今すぐあなたのブログのリストページを参照してくださいとしての記事の下にカテゴリが表示されますブログプロジェクトのすべての変更を見るには、Githubコミットを参照してくださいEp#24 Your First Eloquent Relationship
.
Reference
この問題について(ラーラヴエルの最初の雄弁な関係), 我々は、より多くの情報をここで見つけました https://dev.to/arifiqbal/your-first-eloquent-relationship-in-laravel-3ac4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol