У меня есть две таблицы ГРУПП и СТРАНИЦ в отношении одной группы ко многим страницам.Таблицы связаны вместе с помощью group_id (в таблице страниц).Текущий код позволяет мне отображать имена всех групп, но не отображать страницы, назначенные определенной группе.
Группа моделей:
class Group extends Model
{
protected $fillable = [
'title',
'navbar_id',
];
public function pages()
{
return $this->hasMany(Page::class);
}
}
Страница модели:
class Page extends Model
{
protected $fillable = [
'title',
'group_id'
];
public function groups()
{
return $this->belongsTo(Group::class, 'group_id');
}
ForeignKey:
public function up()
{
Schema::table('pages', function(Blueprint $table){
$table->integer('group_id')->unsigned()->change();
$table->foreign('group_id','pages_group_id_foreign')->references('id')->on('groups');
});
}
AppServiceProvider:
view()->composer('*', function($view){
$view->with('topbar', Group::where('visible',1)->with(['pages'])->get());
});
и фрагмент View:
@foreach($topbar as $group)
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#">{{ $group->title }}</a>
<ul class="dropdown-menu">
@foreach($group->pages() as $page)
<li class="">
<a href="#" class="dropdown-item">{{ $page->title }}</a>
</li>
@endforeach
</ul>
</li>
@endforeach