Relationships
The order model has some convenient ways to find loaded relationship data. These methods and properties do not perform queries, they simply make accessing nested data easier.
$order->prices
You can each of the order->line_item->price using the prices property.
So instead of this:
$prices = array_map(function($item) {
return $item->price;
}, $order->line_items);
You can simply do this:
$prices = $order->prices;
$order->price_ids
You can each of the order->line_item->price->id using the prices property.
$prices = array_map(function($item) {
return $item->price;
}, $order->line_items);
$price_ids = array_map(function($price) {
return $price->id;
}, $prices);
You can simply do this:
$prices = $order->price_ids;
$order->hasSubscriptions()
Does the order contain a subscription?
$has_subscription = (bool) $order->hasSubscriptions();
$order->hasPriceId( $id (string) )
Does the order have this price id in it's line items?
$has_subscription = (bool) $order->hasPriceId( '8ba8d60f-5277-4e6b-807c-dee8166446d5');