Плагин Builder, как отобразить элементы, выбранные другим классом модели вместо всех элементов?

Я создаю свой собственный плагин с плагином octoberCMS Builder. Есть 2 разных модельных класса

  1. категория
  2. вещь

внутри класса модели "элемент" у меня есть отношение к категории класса модели, поэтому каждый элемент может быть связан с "категорией".

На моей веб-странице я хотел бы отобразить категорию класса модели и все элементы из класса модели "item", которые связаны с этой категорией.

однако теперь отображаются все элементы, а не те, которые связаны с категорией. Я думал использовать знак ==, но пока это не работает. Как я могу решить эту проблему? Помощь будет высоко ценится!

объяснение моего вопроса как выглядит моя страница

1 ответ

Может быть, вы можете использовать родительский корабль.

В вашем Category модель добавить отношения

class Category extends Model
{
    // we consider item table has `category_id` field to maintain relationship  
    public $hasMany = [
        'items' => ['Yournamespace\Item']
    ];
}

Теперь все, что вы можете, так это получить Categories

$categories= Category::all();
// pass $categories to view

теперь перебрать category а также its items

<ul>
    {% for category in categories%}
        <li>
            <h3> {{ category.name }} </h3>
            <ul>
                {% for item in category.items %}
                    <li>{{ item.name }}</li>
                {% endfor %}
            </ul>
        </li>
    {% endfor %}
</ul>

Будет show list of categories в качестве основного списка и each list have sub-list как это предметы

если есть сомнения, пожалуйста, прокомментируйте.

Другие вопросы по тегам