Я предполагаю, что $user
является экземпляром User
Eloquent модели и имеет определенное отношение company
, которое возвращает экземпляр Company
Eloquent модели.
Учитывая следующий код, вы бы вернули объект JSON, который содержал выходные данные свойств в модели User
, вероятно, те, которые определены свойством visible
в модели (или все, кроме тех, которые определены свойством hidden
вмодель).
$user = User::findOrFail(1);
return $user->toJson();
В этом примере отношение company
не будет частью возвращаемых данных (если только вы не используете свойство with
в модели, чтобы гарантировать, что оно всегда возвращается).
Однако, с помощью следующего кода вы бы вернули объект JSON, который содержал выходные данные всех свойств модели User
, а также представление JSON его связанного отношения company
(при условии, что ваш visible
или *Свойство 1020 * в модели User
допускает следующее:
$user = User::findOrFail(1);
$user->company;
return $user->toJson();
Причина различия заключается в том, что при вызове метода toJson
Laravel использует метод с именем getArrayableRelations
, чтобы определить, какие отношения доступныдолжны быть возвращены. Любое отношение, которое уже было загружено экземпляром модели, будет включено в этот вывод.
Когда вы вызываете $user->company
, вы загружаете отношение company
локально в экземпляре модели, и онозатем будут включены в любые методы сериализации, такие как toArray
или toJson
.