Есть несколько вещей, происходящих.
Во-первых, Laravel использует 'Eager Loading' при работе с модельными отношениями.
Из документации.(https://laravel.com/docs/5.6/eloquent-relationships#eager-loading)
Это означает, что данные отношений фактически не загружаются до тех пор, пока вы не получите первый доступ к свойству. Однако Eloquent может «загружать» отношения во время запроса родительской модели.
Это означает, что Laravel не загрузит ваши отношения, пока вы не попытаетесь получить к ним доступ.
Например, следующий код лениво загрузит категорию.
foreach (InventoryItems::all() as $inventoryItem) {
dump($inventoryItem->category); // Laravel loads the category here and not before
}
Вы также можете загружать отношения, когда извлекаете саму модель.
$items = InventoryItems::all()->load('category'); // Laravel loads the category here.
dd($items);
Единственное, что здесь следует отметить, это то, что при загрузке вы должны использовать функцию имени отношения, а не имя модели, которую выполучение.
, если отношение вашей категории было определено как
public function itemCategory()
Вы бы использовали
InventoryItems::all()->load('itemCategory');
Следует упомянуть, что -> load () работает толькодля коллекций, а не для строителей.
для строителей, которые вам нужно использовать -> с ()
например
InventoryItems::all()->load('category'); // all() has already returned a collection so we have to 'load' additional data
InventoryItems::where('condition','=','something')->with('category')->get(); // This is a builder (until we call get() or first()) so we can ask for the data to be delivered 'with' the category to the collection