но пятница и я туплю )))
Есть модель Category в ней id категории и parent_id дочерняя категория,
есть модель Item где cat_id равно id категории
в модели Item есть связка
public $belongsTo = [
'cat' => [Category::class],
];
и в файле columns.yaml
cat:
label: Категория
relation: cat
select: title
Все работает,
только нужно в columns.yaml отобразить через косую Категория / Дочерняя категория
Как это сделать ?
Создать в модели акцессор, который будет выводить "хлебные крошки категории", и в columns.yaml указать его вместо релейшена
В модели: public function getPathAttribute() : string { $parts = $this->getParentsAndSelf()->lists('title'); return join(' / ', $parts); } В columns.yaml: path: label: Категория
Это сработает, если используется трейт NestedTree. Если нет, то принцип тот же, только там уже нужно подставить значения вручную.
+ Спасибо за направление
return $this->getParentsAndSelf()->pluck('title')->implode(' / ')
То же самое, только через коллекцию, в одну строчку)
именно, и без лишних телодвижений. lists является в своей реализации абстракцией над pluck(…)->all(). Следственно в начале ты получаешь из базы данные, которые попадают в коллекцию, которая сразу распакуется в массив (->all()). Следственно смысл коллекции - лишнее действие. Поэтому если все-таки коллекция появляется, логичнее ей воспользоваться. А метод ->implode как раз вернет строку из коллекции.
👍 полностью согласен)
Обсуждают сегодня