前提・実現したいこと
laravel学習中のものです。リレーションについて勉強しているのですが、
foodInformationsとfoodInformationRowsは一対一で
それらのIDと一致する
foodInformationDetailsとfoodMastersをそれぞれwith句を使用して取得したいと考えているのですが、
リレーションについて知識不足のためか、 エラーも出ず取得ができません。
foodInformationDetailsとfoodMastersには複数行のデータが入る想定です。
知見のある方ご教授いただきたです。よろしくお願いいたします。
foodMastersテーブル
id | name |
---|---|
1 | 区分1 |
2 | 区分2 |
foodInformationsテーブル
id | code | name |
---|---|---|
1 | A01 | みかん |
foodInformationRowsテーブル
id | food_info_id | from_date |
---|---|---|
1 | 1 | 2019-01-01 |
foodInformationDetailsテーブル
id | food_master_id | food_info_id | food_info_row_id | price |
---|---|---|---|---|
1 | 1 | 1 | 1 | 100 |
1 | 2 | 1 | 1 | 200 |
該当のソースコード
php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7use Illuminate\Database\Eloquent\SoftDeletes; 8use App\Models\FoodInformationDetail; 9 10class FoodInformations extends Model 11{ 12 use HasFactory; 13 use SoftDeletes; 14 15 public function foodInformationDetails() 16 { 17 return $this->hasMany(FoodInformationDetail::class, 'food_info_id', 'id'); 18 } 19} 20
php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7use Illuminate\Database\Eloquent\SoftDeletes; 8use App\Models\FoodInformationDetail; 9 10class FoodInformationRow extends Model 11{ 12 use HasFactory; 13 use SoftDeletes; 14 15 public function FoodInformationDetails() 16 { 17 return $this->hasMany(FoodInformationDetail::class, 'food_row_id', 'id'); 18 } 19} 20
php
1$query = FoodInformations::query(); 2 3 $query->select(DB::raw( 4 "food_informations.code, 5 food_informations.name, 6 food_information_rows.from_date, 7 " 8 )) 9 ->join('food_information_rows', 'food_informations.id', '=', 'food_information_rows.food_info_id') 10 ->with('foodInformationDetails');
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。