Когда вы делаете:
$response = Colonia::find(1)->city;
Метод find()
возвращает результат запроса, в данном случае первый объект таблицы catalogo_colonias
.Один объект, у этого объекта есть все ваши определенные свойства, например, отношение city
.
Теперь, когда вы вместо этого используете метод where()
, он по-прежнему не извлекаетобъектов отношений пока нет, потому что в некоторых случаях вы хотели бы продолжать ограничивать запрос.Вместо этого он возвращает экземпляр класса Query Builder .Вот почему он выдает ошибку:
$response = Colonia::where('codigo_postal', $codigo_postal) // return query builder
->city; // this property isn't defined in the builder, hence, the error.
Чтобы получить результат, вам нужно добавить get()
(чтобы получить все результаты, соответствующие запросу) или first()
или т. Д.
$response = Colonia::where('codigo_postal', $codigo_postal) // query builder
->first() // returns an instance of Colonia
->city; // now it can access the model properties.