Setup relations like in docs http://laravel.com/docs/eloquent#relationships
Then you can get collection you want like this:
//return $product_type->products;
$product_type->load('products')->products; // returns Eloquent Collection of products
// or shorter equivalent:
$product_type->products;
//return $product_type->attribute_types;
the same as above since the relationships are identical (many-to-many)
// Then to get Attributes:
$product_type->load('products.attributes');
//then you can get all attributes as a single array (every attr as an array not model):
$attributesArray = $product_type->products->fetch('attributes')->collapse();
// or without casting merge all Attributes in a loop:
$attributesCollection = new \Illuminate\Database\Eloquent\Collection;
foreach ($product_type->products as $product)
{
$attributesCollection = $attributesCollection->merge($product->attributes);
}