Здесь вы можете посмотреть полный пример:
Introspection может использоваться для разных целей, один из которых представлен в «Dive Into Python» - это просто способ динамически добавлять функциональность (плагин) в ваше приложение.
Динамически я имею в виду без сделать модификацию в основном приложении, чтобы добавить новую функцию.
Взяв пример «Dive Into Python» - простое приложение для извлечения атрибута из файла другого файла - вы можете добавить обработка нового формата файла без внесения изменений в исходное приложение.
Я рекомендую вам закончить книгу. Когда вы читаете, все станет более ясным.
Когда вы используете метод join () в своих запросах, рекомендуется также использовать select (), чтобы больше не было неоднозначно, на какую таблицу вы ссылались. В вашем коде запрос может выглядеть примерно так:
$apples = Apple::join('brands', 'brand_id', 'brands.id')->select('apples.*')->where('brand_id', $brand->id)->get();