【问题标题】:Showing data in a view blade from value join Laravel从值连接 Laravel 在视图刀片中显示数据
【发布时间】:2020-05-08 02:34:48
【问题描述】:

我有多个连接表,我想在视图刀片中绑定在选择中使用别名,他是我加入和选择列的控制器:

public function show($id)
{
    $transaksi = Transaksi::find($id);
    $detail_transaksi = DetailTransaksi::whereIn('transaksi_id',$transaksi)
    ->join('transaksi', 'detail_transaksi.transaksi_id', 'transaksi.id')
    ->join('paket', 'detail_transaksi.paket_id', 'paket.id')
    ->join('kendaraan', 'detail_transaksi.kendaraan_id', 'kendaraan.id')
    ->join('pelanggan', 'transaksi.pelanggan_id', 'pelanggan.id')
    ->leftJoin('pencuci as p1', 'transaksi.pencuci_id', 'p1.id')
    ->leftJoin('pencuci as p2', 'transaksi.pencuci2_id', 'p2.id')
    ->select('detail_transaksi.transaksi_id as id',
    'transaksi.tanggal_transaksi as tanggal_transaksi',
    'pelanggan.name as nama_pelanggan',
    'p1.name as nama_pencuci1')
    ->get();
    return view('invoice',['detail_transaksi'=>$detail_transaksi]);
}

在一个视图中,我使用如下连接结果:

<strong>{{$detail_transaksi->id}}</strong>
<strong>{{$detail_transaksi->nama_pelanggan}}</strong>

但我得到这样的错误:

谢谢你的帮助..

【问题讨论】:

    标签: laravel


    【解决方案1】:

    因为你调用了get(),所以这个方法会返回一个Illuminate\Database\Collection。您可以调用Collection::first() 来获取集合的第一个元素:

    <strong>{{$detail_transaksi->first()->id}}</strong>
    <strong>{{$detail_transaksi->first()->nama_pelanggan}}</strong>
    

    或者,使用first() 替换get() on query eloquent:

    $detail_transaksi = DetailTransaksi::whereIn('transaksi_id',$transaksi)
        ->join('transaksi', 'detail_transaksi.transaksi_id', 'transaksi.id')
        ->join('paket', 'detail_transaksi.paket_id', 'paket.id')
        ->join('kendaraan', 'detail_transaksi.kendaraan_id', 'kendaraan.id')
        ->join('pelanggan', 'transaksi.pelanggan_id', 'pelanggan.id')
        ->leftJoin('pencuci as p1', 'transaksi.pencuci_id', 'p1.id')
        ->leftJoin('pencuci as p2', 'transaksi.pencuci2_id', 'p2.id')
        ->select(
            'detail_transaksi.transaksi_id as id',
            'transaksi.tanggal_transaksi as tanggal_transaksi',
            'pelanggan.name as nama_pelanggan',
            'p1.name as nama_pencuci1'
        )
        ->first(); // Replace here
    

    Eloquent 将返回第一个匹配行,class 是你的模型DetailTransaksi

    var_dump( class_basename($detail_transaksi) );
    
    // string(15) DetailTransaksi
    

    无需更改视图,它应该可以正常工作。

    <strong>{{$detail_transaksi->id}}</strong>
    <strong>{{$detail_transaksi->nama_pelanggan}}</strong>
    

    参考:

    【讨论】:

      【解决方案2】:
       $detail_transaksi = DetailTransaksi::whereIn('transaksi_id',$transaksi)
      
          ....
      
          ->first();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-08
        • 2020-07-26
        • 2016-08-15
        • 1970-01-01
        • 2020-10-10
        • 2013-07-09
        • 2020-09-13
        • 1970-01-01
        相关资源
        最近更新 更多