繁体   English   中英

Laravel 根据关系获取数据

[英]Laravel get data based on relationship

所以我有两个表,投标表和项目表。 它们之间的关系是这样的:

投标.php:

public function projects()
  {
        return $this->belongsTo('App\Projects');
  }
    

项目.php:

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

这是项目表 这是投标表 我想在 View 的每一行表格中打印所有投标数据及其各自的项目数据。 我试图在我的 controller 中这样做:

$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

但是我在表格的一行中重复了数据。 那么正确的方法应该是什么? 抱歉,如果这有点含糊,但这是我抽象地解释它的最佳方式。

您没有使用您在此处定义的关系。

$bids = auth()->user()->bids()->with('project')->get();

这将急切地加载每个投标的project关系。

我真的不知道您希望它在视图中如何显示,但您可以迭代投标并非常简单地获取项目信息:

@foreach ($bids as $bid)
    {{ $bid->id }}
    {{ $bid->project->name ?? '' }}
@endforeach

边注:

您的Projects model 应该是Project ,模型以单数命名,数据库表以复数命名。 您的关系应该是project而不是projects ,因为它是一个单一的关系,属于; 它只能返回一条记录或null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM