#php #laravel #eloquent
#php #laravel #eloquent
Вопрос:
У меня много отношений ко многим, например:
// Category Model
class Category extends Model
{
public function sections()
{
return $this->belongsToMany('AppSection');
}
}
// Section Model
class Section extends Model
{
public function categories()
{
return $this->belongsToMany('AppCategory');
}
}
Допустим, у меня есть следующие отношения категории / раздела со следующими слагами:
domestic
dogs
cats
birds
zoo
cats
birds
winged
birds
Есть ли красноречивый или простой способ перечислить все разделы с их категорией?
Чтобы представить это в контексте, если у category и section был slug, основываясь на моем примере, я хотел бы получить список разделов, подобных этому:
domestic/dogs
domestic/cats
domestic/birds
zoo/cats
zoo/birds
winged/birds
Я пытался создать сводную модель, расширив класс Pivot, но не могу с этим справиться.
Любая помощь с благодарностью.
Ответ №1:
Что-то вроде этого может помочь:
// Retrieve all categories
$categories = Category::with('sections')->all();
// Define result array
$result = [];
foreach ($categories as $category) {
foreach ($category->sections as $section) {
$result[] = $category->slug . '/' . $section->slug;
}
}
// Result now holds the contents you are looking for
Комментарии:
1. Спасибо @Maarten Veerman. Да, это помогает. Хотя я надеялся на решение Eloquent. Что-то менее обременительное для большой базы данных.