У мене є додаток laravel і у мене є наступні моделі
- Семінар
- Майстерня категорії
У мене 3 столу,
- семінарів
- category_categories
- відношення семінару
Я намагаюся красномовно використати всі свої майстерні, з такими категоріями, як:
{
"id":14,
"workshop_name":"First Workshop",
"description":"Located all over",
"categories": array: [
0 => "wood"
1 => "metal"
]
}
Яким буде найкращий спосіб досягти цього? я б у своїй моделі майстерні додав наступне:
public function categories()
{
return $this->belongsToMany("AppWorkshopcategory", "workshop_category_relation", "workshop_id", "category_id");
}
Я додав вищезгадану функцію до своєї моделі майстерні і, коли спробую вивести семінар, на зразок наступного:
$workshop = Workshop::FindOrFail(14);
return $workshop->categories();
Я отримую таку помилку:
Об'єкт класу IlluminateDatabaseEloquentRelationsBelongsToMany не може бути перетворено в рядок
Відповіді:
0 для відповіді № 1Я думаю, ви просто шукаєте Багатьом багато.
Все, що вам потрібно зробити, це перейменувати workshop_category_relation
таблицю до "workshop_category", а потім ваш belongsToMany
повинен працювати.
0 для відповіді № 2
Коли ви телефонуєте:
return $workshop->categories()->get();
або просто:
return $workshop->categories;
Ви отримаєте Collection
категорій, які стосуються майстерні, а потім ви можете повторити
foreach($workshop->categories as $category) {
$category->field_name
}