Postingan lainnya
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.
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.
1 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