Php 使用Laravel关系在视图上显示数据库中的数据

Php 使用Laravel关系在视图上显示数据库中的数据,php,laravel,eloquent,Php,Laravel,Eloquent,我试图从表客户、凭单和账单中获取数据,并将其显示在视图中。客户与票据和凭单有很多关系。以下是我的模型代码: 客户: public function Bills(){ return $this->hasMany('App\Bill', 'customer', 'id'); } public function Vouchers(){ return $this->hasMany('App\Voucher', 'customer_name', 'id'); } 以

我试图从表客户、凭单和账单中获取数据,并将其显示在视图中。客户与票据和凭单有很多关系。以下是我的模型代码:

客户:

    public function Bills(){
    return $this->hasMany('App\Bill', 'customer', 'id');
}

public function Vouchers(){
    return $this->hasMany('App\Voucher', 'customer_name', 'id');
}
以下是我的凭证模型代码:

 public function Customer(){
    return $this->belongsTo('App\Customers', 'id', 'customer_name');
}
以下是账单模型的代码:

    public function Customer(){
    return $this->belongsTo('App\Customers', 'id', 'customer');
}
以下是我为此制作的控制器功能:

public function client_search(Request $request){
    $date_from = $request['from-date-city'];
    $date_to = $request['to-date-city'];
    $client = $request['client'];

    $results = Customers::with('Bills', 'Vouchers')
        ->where('id', $client)->get();
    return view('pages.prints.ledger-report-clientwise')->with('results', $results);
}
下面是我试图在视图中显示的方式:

@foreach($results as $result)
                    <tr>
                        <td>{{$result->Vouchers->date}}</td>
                        <td>{{$results->Vouchers->narration}}</td>
                        <td>{{$result->Vouchers->amount}}</td>
                        <td>{{$result->Bill->total_amount}}</td>
                        <td>{{$result->balance}}</td>

                    </tr>

                        @endforeach

这是你的问题。凭单是一个hasMany关系,这意味着当使用$result->凭单调用它时,它将返回一个集合对象,这意味着它本质上是一个数组,而不是单个对象。如果要访问$result->凭单->日期,则必须在每个凭单上循环,并一次回显一个凭单,或者使用第一个凭单:

@foreach($results as $result)
  @foreach($result->Vouchers AS $voucher)
  <span>The date is {{ $voucher->date }}</span>
  @endforeach
@endforeach
下一个问题是你得到了{{$results->dictionals->atternation},这和以前的问题是一样的;尝试访问集合的属性,而不是单个$result或凭证对象。这看起来是个打字错误


你的想法是对的,但是你需要知道什么时候访问一个集合,什么时候访问一个对象,所以请阅读Laravel的集合,并雄辩地表达你的想法。

谢谢!成功了。很明显,我所采取的方法与一段属于自己的关系有关,我认为这也会反过来。
@foreach($results as $result)
  @foreach($result->Vouchers AS $voucher)
  <span>The date is {{ $voucher->date }}</span>
  @endforeach
@endforeach