Menampilkan data relasi one to many laravel

Selamat pagi teman-teman. Saya mau tanya tentang relasi one to many di Laravel. Saat ini saya memiliki tabel kategoris dengan model Kategori dan tabel kodes dengan model Kode. Disini saya memiliki relasi One to Many dimana satu data kategori, akan memiliki banyak data di tabel kodes. Berikut ini gambaran relasinya. Screenshot-1.png Yang mau saya tanyakan adalah bagaimana menampilkan data kode di tabel beserta kategorinya berdasarkan tabel kategori? Berikut model untuk Kode.
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kode extends Model
{
    protected $table = 'kodes';

    protected $fillable = [
        'nama_barang',
        'kode_barang',
        'kategori_id',
    ];

    public function kategori()
    {
        return $this->belongsTo(Kategori::class);
    }
}
Dan ini adalah model untuk kategorinya.
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Kode;

class Kategori extends Model
{
    protected $table = "kategoris";

    protected $fillable = [
        "kategori",
        "kode_kategori",
    ];

    public $timestamp = false;

    public function kode()
    {
        return $this->hasMany(Kode::class);
    }
}
Untuk controllernya adalah ini.
<?php

namespace App\Http\Controllers;

use App\Kategori;
use App\Kode;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        $kategoris = Kategori::all();
        $lokasis = DB::table('lokasis')->paginate(3);
        $kodes = DB::table('kodes')->paginate(3);

        return view('dashboard.index', [
            'kategoris'         =>          $kategoris,
            'lokasis'           =>          $lokasis,
            'kodes'             =>          $kodes,
        ]);
    }
}
Saya mencoba langsung menampilkannya di view dengan kode ini.
<table class="table">
                    <thead>
                        <tr>
                            <th>Nama Barang</th>
                            <th>Kode Barang</th>
                            <th>Kategori Barang</th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach($kodes as $kode)
                            <tr>
                                <td>{{ $kode->nama_barang }}</td>
                                <td>{{ $kode->kode_barang }}</td>
                                <td>{{ $kode->kategori->kategori }}</td>
                            </tr>
                        @endforeach
                    </tbody>
                </table>
Dan hasilnya menampilkan error dengan keterangan Facade\Ignition\Exceptions\ViewException Undefined property: stdClass::$kategori (View: C:\...\resources\views\dashboard\index.blade.php) Yang saya inginkan adalah menampilkan nama kategorinya di card Kode Barang. Saya baru bisa menampilkan id nya saja. Screenshot-2.png
avatar masridh

Ditanyakan oleh @masridh

3 Kontribusi 0 Poin

Login untuk menanggapi


Jawaban

setau saya untuk menggunakan fitur Relation laravel kayak hasMany, etc. pas manggil tablenya harus pake Eloquent juga, jangan pake DB::table() tentu si ->kategori gak ke defined
avatar beckbella

Dijawab oleh @beckbella

65 Kontribusi 37 Poin

Login untuk menanggapi


Login untuk gabung berdiskusi