質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

1462閲覧

belongsaToManyで取得したリレーション先のリレーションを取得

chocomint20

総合スコア1

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/09/29 01:39

編集2022/01/12 10:55

https://teratail.com/questions/50857?link=qa_related_pc
この記事を参考にして、中間テーブルのリレーションを取得したのですがさらにここからリレーション先のリレーションを取得するにはどうしたらいいのでしょう。
productsテーブルにcategory_idというカラムがありcategoriesテーブルとリレーションしているとします。参考記事の方法でproductsテーブルの情報を取得し、さらにそこからそのproductsテーブルのcategory_idに紐付いたcategoriesテーブルの情報を取得するにはどのようにすればいいのでしょうか。
■テーブル設計
【usersテーブル】
id | name | password | created_at | updated_at |

【productsテーブル】
id | title | price | category_id |user_id | created_at | updated_at |

【favoritesテーブル】
user_id | product_id | created_at | updated_at |

【categoriesテーブル】
id | name | created_at | updated_at |

User.php

public function products() { return $this->hasMany('App\Producdt'); } public function favorites() { return $this->belongsToMany('App\Products', 'favorites'); }

Product.php

public function category() { return $this->belongsTo('App\Category'); } public function favorites() { return $this->belongsToMany('App\Favorite', 'favorites'); } public function user() { return $this->belongsTo('App\User'); }

Category.php

public function products() { return $this->hasMany('App\Product'); }

Favorite.php

class Favorite extends Model { // }

web.php

Route::get('/my/favorite', 'ProductsController@myFavorite')->name('my.favorite');

ProductsController.php

public function myFavorite() { $user = Auth::user(); $favorites = $user->favorites; return view('products.favoriteProducts', [ 'favorites' => $favorites, ]); }

favoriteProducts.blade.php

<div id="app"> <favorite-products :favorites="{{$favorites}}"></favorite-products> </div>

FavoriteProducts.vue

<div v-for="product in favorites"> {{ product.category_id }} // ここにproductsテーブルのcategory_idとリレーションしたcategoriesテーブルのnameカラムの値を表示したい </div> <script> export default { props: { favorites: Array, }, mounted() { console.log('Component mounted.') } } </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

phper.k

2020/09/29 01:44

imagesではなくimageテーブルなのですか?
chocomint20

2020/09/29 01:48

すみません、imagesでした
phper.k

2020/09/29 02:14

手元のソースコードを過不足なく提示してください。
chocomint20

2020/09/29 21:03

すみません、詳細コードを記載し訂正しました
phper.k

2020/09/30 00:10

Aidhia ってなんですか?
chocomint20

2020/09/30 01:50

すみませんミスです、訂正しました
phper.k

2020/09/30 01:59

products テーブルの user_id は、「データの作成者」の意味ですか?それとも、「製品の所有者」の意味ですか?
phper.k

2020/09/30 02:06

追加 {{ product.category_id }} の部分で、category_id の値は表示されているのですか?
chocomint20

2020/09/30 04:08

productsテーブルのuser_idは製品の所有者です。 {{ product.category_id }}とすれば値は表示されます
guest

回答1

0

diff

1<div v-for="product in favorites"> 2- {{ product.category_id }} // ここにproductsテーブルのcategory_idとリレーションした 3+ {{ product.category.name }} 4</div> 5 6<script> 7 export default { 8 props: { 9 favorites: Array, 10 }, 11 mounted() { 12 console.log('Component mounted.') 13 } 14 } 15</script>

これで取れると思う

投稿2020/09/30 04:29

phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chocomint20

2020/09/30 13:14

遅くなり申し訳ありません、やってみたところエラーとなりだめでした。。。 Error in render: "TypeError: Cannot read property 'name' of undefined"となってしまいました。
chocomint20

2020/09/30 13:30

ProductsControllerで$user = Auth::user(); $favorites = $user->favorites; foreach($favorites as $favorite){ dd($favorite->category->name); } こうするとちゃんと値を取れるのでVue側に問題がありそうです。
phper.k

2020/10/01 00:17

中間テーブルをモデルにしているのがそもそも間違いなんですけどね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問