Имею две таблицы
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() - добавляет данные по запрошенной связи к результату запроса в виде подмассива.
Касательно обратной связи - это не обязательно. Указываете только те связи, которые используете.
Если вы следуете соглашению по именованию, то вы себе сильно упрощаете жизнь. Для кого вообще делают курсы? Субтитры присутствуют.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости