сделал так
$products = DB::table('products')
->leftJoin('categoryables', 'categoryables.categoryable_id', '=', 'products.id')
->leftJoin('categories', 'categoryables.category_id', '=', 'categories.id')
->leftJoin('brands', 'products.brand_id', '=', 'brands.id')
->leftjoin('colors',DB::raw('FIND_IN_SET(colors.id,products.color_id)'),">",DB::raw("'0'"))
->leftjoin('sizes',DB::raw('FIND_IN_SET(sizes.id,products.size_id)'),">",DB::raw("'0'"))
->whereIn('categoryables.category_id', $categories)
->orderBy('created_at', 'desc')
->select('products.*', 'categories.path', 'categories.title', 'brands.name_brand', 'colors.name_color', 'colors.img_color', 'sizes.brand_name_size')
->paginate(5);
но в базе только последнее поле. а не масив из значениями