(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

avatar Juliand
@Juliand

40 Kontribusi 3 Poin

Diperbarui 4 tahun yang lalu

3 Jawaban:

parameter 'id' di relasi nya buat apa yaa gan ?

avatar coderss
@coderss

9 Kontribusi 1 Poin

Dipost 4 tahun yang lalu

index.blade

<pre> &lt;td&gt; {{ !is_null($produk-&gt;kategoriproduk) ? $produk-&gt;kategoriproduk-&gt;nama : null }} &lt;/td&gt; </pre>

avatar opanegro
@opanegro

3 Kontribusi 1 Poin

Dipost 4 tahun yang lalu

Karena hasilnya bukan object akan tetapi array. Seharusnya di loop.

<pre> @foreach($produk-&gt;kategoriproduk as $kategori) &lt;td&gt;{{$kategori]-&gt;nama}}&lt;/td&gt; @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>

avatar wandry
@wandry

32 Kontribusi 16 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban