To get the relationship from same table eloquent model with parent and child relations ship.
Here is an example for menus which has parent asn child relationship.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
// fillable
protected $fillable = ['title', 'slug','parent_id'];
//each category might have one parent
public function parent() {
return $this->belongsToOne(static::class, 'parent_id');
}
//each category might have multiple children
public function children() {
return $this->hasMany(static::class, 'parent_id')->orderBy('id', 'asc');
}
}Accessing the relational data.
use App\Models\Category;
$categories = Category::with('children')->get();it will gives the result with their children relation.
Retreieve the relation in blade view.
@foreach( $categories as $category )
@if($category->parent_id == '')
<li>
<a href="{{ $category->slug }}" @if ($category->children->count()) class="dropdown-toggle" data-toggle="dropdown" @endif>{{ $category->title }} @if ($category->children->count())<b class="caret caret-right"></b>@endif</a>
@if ($category->children->count())
<ul class="dropdown-menu">
@foreach ($category->children as $child)
<li><a href="{{ $child->slug }}" >{{ $child->title }}</a></li>
@endforeach
</ul>
@endif
</li>
@endif
@endforeachPlease follow and like us:






