Подкатегория Laravel и Родительские категории, значения не отображаются - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь создать представление подкатегории и списка категорий в моем блейд-файле.Я создал все необходимое, и все же по какой-то причине никакие значения не отображаются на мой взгляд.Там нет никаких ошибок, но я не вижу никаких значений.

Это мой взгляд

 @foreach ($pro_cat as $cat)
              <ul class="list-group">
                    <a data-toggle="collapse" href="#collapseExample" class="card-header list-group-item d-flex justify-content-between align-items-center">
                        <option value="{{ $cat->id }}">{{ ucwords($cat->name) }}</option>
                      <span class="badge badge-primary badge-pill">{{ count($pro_cat)}}</span>
                    </a>
                    @foreach ($sub_cat as $cat)
                        @if($sub_cat->cat_id == $pro_cat->id)
                    <div id="collapseExample" class="collapse">
                            <ul class="list-group">
                            <option class="list-group-item" value="{{ $cat->id }}">{{ ucwords($cat->name) }}</option>
                            </ul>
                            @endif
                    </div>
                    @endforeach
                    @endforeach

Я не уверен, связан ли он с видом, или это ошибка в моем контроллере, но я подключил свой контроллер ниже только вдело.Любая помощь будет принята с благодарностью

 $pro_cat = Pro_cat::where('id', NULL)->get();
  $sub_cat = Sub_cat::where('cat_id','!=',NULL)->get();
    return view('liturgy.posts.index')->with('pro_cat', $pro_cat)->with('posts', $posts)->with('sub_cat', $sub_cat);

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Добавить отношения к вашей модели категории:

public function children()
{
    return $this->hasMany(self::class, 'cat_id');
}

public function parent()
{
    return $this->belongsTo(self::class, 'cat_id');
}

Получить категории с активной загрузкой дочерних отношений в контроллере:

$posts = blahblah...
$categories = Category::with('children')->get();
return return view('liturgy.posts.index', compact('categories', 'posts'));

Отношение доступа как простой атрибут в представлении:

@foreach ($categories as $category)
    <ul class="list-group">
        <a data-toggle="collapse" href="#collapseExample" class="card-header list-group-item d-flex justify-content-between align-items-center">
            <option value="{{ $category->id }}">{{ ucwords($category->name) }}</option>
            <span class="badge badge-primary badge-pill">{{ $categories->count() }}</span>
        </a>
        @foreach ($category->children as $child)
            <div id="collapseExample" class="collapse">
                 <ul class="list-group">
                     <option class="list-group-item" value="{{ $child->id }}">{{ ucwords($child->name) }}
                     </option>
                 </ul>
            </div>
        @endforeach
    </ul>
@endforeach
0 голосов
/ 16 ноября 2018

Хм, это просто.Создайте свои отношения следующим образом:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model {

    public function sub_category()
    {
        return $this->hasMany(self::class, 'cat_id');
    }

    public function parent_category()
    {
        return $this->belongsTo(self::class, 'cat_id');
    }

}

Затем, когда вызываете модель, добавьте с помощью (), например,

$categories = Category::with('sub_category')->get();

return view('someview', compact('categories'));

Или просто добавьте свойство `$ with` вашей модели, напримерprotected $ with = ['sub_category', 'parent_category'] ;.Это автоматически добавит отношение к коллекции.Мнения

@foreach ($categories as $category)
    {!! $category->name !!}
    @foreach($category->sub_category as $sub_category)
        {!! $sub_category->name !!}
    @endforeach
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...