The reasoning behind sub items is to allow you add additional items without the all the necessary things that a regular item needs. For instance if you really wanted the same item but in a different size and that size costs more, you can add it as a sub item so it calculates in the price.
$item = LaraCart::add(2, 'Shirt', 1, 15.99, [
'size' => 'XXL'
]);
$item->addSubItem([
'description' => 'Extra Cloth Cost', // this line is not required!
'price' => 3.00,
'qty' => 2
]);
$item->subTotal(); // $23.53
$item->subItemsTotal($formatMoney = true); // $6.00
You can set a default model relation along with its sub-relations to an item by setting it in your config item_model.
{warning} This will fetch your model based on the items id stored in the cart
\LukePOLO\LaraCart\CartItem::ITEM_OPTIONS => [
'your_key' => 'price_relation.value' // this will go to the price relation then get the value!
'your_other_key' => 'price_relation.sub_relation.value' // This also works
]
$item = LaraCart::add($itemID = 123123123);
$item = LaraCart::add(Illuminate\Database\Eloquent\Model $itemModel);