つまり、BidsテーブルとProjectsテーブルの2つのテーブルがあります。それらの間の関係それ自体:
Bids.php:
public function projects()
{
return $this->belongsTo('App\Projects');
}
Projects.php:
public function bids()
{
return $this->hasMany('App\Bids');
}
これはプロジェクトテーブルです。これは入札表です。ビューのテーブルの各行に、すべての入札データとそれぞれのプロジェクトデータを印刷したいと思います。私は自分のコントローラーでこのようにしようとしました:
$bids= auth()->user()->bids()->get();
foreach($bids as $bid)
{
$projects= Projects::find($bid->project_id);
}
return view('bids.index',compact('bids','projects'));
インデックスビュー:
@if($bids->count() != 0)
@foreach($bids as $bid)
<tr>
<td><a href="{{ route('projects.select',$projects->id) }}">{{$projects->name}}</a></td>
<td>{{$bid->status}}</td>
</tr>
@endforeach
@else
<tr>
<td colspan="6" class="text-center">No record found.</td>
</tr>
@endif
しかし、テーブルの1行でデータが繰り返されました。それで、それを行うための適切な方法は何でしょうか?これが少し曖昧な場合は申し訳ありませんが、これは抽象的に説明するための私の最善の方法です。
ここで定義した関係を使用していません。
$bids = auth()->user()->bids()->with('project')->get();
これによりproject
、各入札の関係が熱心に読み込まれます。
これをビューでどのように表示するかは本当にわかりませんが、入札を繰り返してプロジェクト情報を非常に簡単に取得できます。
@foreach ($bids as $bid)
{{ $bid->id }}
{{ $bid->project->name ?? '' }}
@endforeach
サイドノート:
あなたのProjects
モデルをしなければならないProject
、モデルは単数形で命名され、データベーステーブルが複数で命名されています。あなたの関係は、それが単一の関係であり、属しているので、そうであるべきではありproject
ませんprojects
。単一のレコードまたはを返すことができnull
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加