Postingan lainnya
(error) memunculkan relasi one to many laravel
Trying to get property 'nama' of non-object (View:
index.blade {{$produk->kategoriproduk->nama}}
model Kategoriproduk public function produks() { return $this->hasMany('App\Produk', 'id'); }
model Produk public function kategoriproduk() { return $this->belongsTo('App\Kategoriproduk', 'id'); }
migrasi table produk Schema::create('produks', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedBigInteger('kategoriproduk_id'); $table->foreign('kategoriproduk_id') ->references('id') ->on('kategoriproduks') ->onDelete('cascade');
migrasi table kategoriproduk Schema::create('kategoriproduks', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('nama'); $table->string('slug')->unique(); $table->timestamps(); });
Gimana ini gan kadang bisa kadang error apa ada yang kurang atau gimana ya
3 Jawaban:
parameter 'id' di relasi nya buat apa yaa gan ?
index.blade
<pre> <td> {{ !is_null($produk->kategoriproduk) ? $produk->kategoriproduk->nama : null }} </td> </pre>
Karena hasilnya bukan object akan tetapi array. Seharusnya di loop.
<pre> @foreach($produk->kategoriproduk as $kategori) <td>{{$kategori]->nama}}</td> @endforeach </pre>
kenapa begitu? karena produk has many kategoriproduk, sehingga ketika di get hasilnya array of object.
seperti ini: <pre> [ { "name": "Pakaian" }, { "name": "Elektronik" } ] </pre>