как получить связанные данные из другой pivot таблицы (Laravel)?
Как мне получить цвета для материала из pivot таблицы, через модель товара?
В модели Product:
public function material(){
return $this->belongsToMany('App\Shop\ProductMaterial', 'pivot_products_mat_top',
'product_id', 'product_material_id');
}
Так же есть такие таблицы:
(pivot, без модели) material_color: | product_color_id | product_color_id |
(с моделью) product_colors: | id | name | image |
в модели App\Shop\ProductMaterial:
public function colors(){
return $this->belongsToMany('App\Shop\ProductColor', 'material_color',
'product_material_id', 'product_color_id');
}
Подскажите, пожалуйста, как в функции materaial() в модели product подцепить цвета к материалу и возможно ли это? Изучаю Laravel 7, впервые делаю на нем проект, в документации по связям (relationships) так и не разобрался как решить эту задачу.
Ответы (1 шт):
Решил задачу следующим образом. Но мне кажется немного колхоз. Напишите в комментах, может есть какая-то встроенная ф-я самой лары?
App\Product (model)
public function material($table_ending){
$materials = $this->belongsToMany('App\Shop\ProductMaterial',
'pivot_products_mat_'.$table_ending, 'product_id', 'product_material_id')->get();
foreach($materials as $k=>$mat){
$colors = ProductMaterial::find($mat->id);
$materials[$k]['colors'] = $colors->colors()->get();
}
return $materials;
}