Имею две таблицы
Users(id, name, country)
Countries(id, country, city)
Как мне правильно сформировать запрос чтобы получить в массиве id,name,country, city?
Пробовал через hasOne в модельке Users
public function country(){
return $this->hasOne('App\Countries', 'country', 'country');
}
В котроллере
Users::orderBy('id', 'desc')->country()->get();
по разному пробовал ничего не выходит, возможно обязательно нужно сделать ответный belongsTo правильно ??
1) Не country, а country_id. И не country, а name. По хорошему надо и city выносить в отдельную страницу.
Users(id, name, country_id)
Countries(id, name, city)
2) Соответственно модель. Модель должны быть в единственном числе - название файлов модели и классов модели. Всё в единственном. А названия таблиц в БД - во множественном. Почитайте про соглашения имён в laravel
public function country()
{
return $this->hasOne('App\Country');
}
3) Запрос. Если вы хотите получить и данные из таблицы users, и данные из таблицы countries, тогда так (опять же - модели в единственном числе)
User::orderBy('id', 'desc')->with('country')->get();
with() - добавляет данные по запрошенной связи к результату запроса в виде подмассива.
Касательно обратной связи - это не обязательно. Указываете только те связи, которые используете.
Если вы следуете соглашению по именованию, то вы себе сильно упрощаете жизнь. Для кого вообще делают курсы? Субтитры присутствуют.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники