Отображение данных в блейде вида из значения join Laravel - PullRequest
0 голосов
/ 22 января 2020

У меня есть несколько таблиц соединения, и я хочу, чтобы привязка в блейде вида использовала псевдоним в select, это мой контроллер для соединения и выбора столбца:

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>

но я получаю ошибку вот так:

enter image description here

Спасибо за помощь ..

Ответы [ 2 ]

1 голос
/ 22 января 2020

Поскольку вы вызываете get(), этот метод будет возвращать Illuminate\Database\Collection. Вы можете вызвать Collection::first(), чтобы получить первый элемент коллекции:

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

Или, используйте first(), чтобы заменить get() на запросе 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 вернется первым соответствует строке и классу соответствует ваша модель DetailTransaksi:

var_dump( class_basename($detail_transaksi) );

// string(15) DetailTransaksi

Нет необходимости изменять вид, он должен работать нормально.

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

Ссылка:

1 голос
/ 22 января 2020
 $detail_transaksi = DetailTransaksi::whereIn('transaksi_id',$transaksi)

    ....

    ->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...