Имею две таблицы
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()
- добавляет данные по запрошенной связи к результату запроса в виде подмассива.
Касательно обратной связи - это не обязательно. Указываете только те связи, которые используете.
Если вы следуете соглашению по именованию, то вы себе сильно упрощаете жизнь. Для кого вообще делают курсы? Субтитры присутствуют.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пытаюсь сделать на PHP добавление товара в корзинуЯ присваиваю кнопке атрибут name с id из бд(выглядит это так name="tovar<тут подставляется id>")...
1)Когда пытаюсь вызвать exec из одного скрипта другой, он не запускает его, хотя из командной строки запускает скрипт2) Также не могу убивать...
При прогоне тестов (CRUD) нужно удалять (или отменять) запись в БД, что бы не лезть руками каждый раз в тест и не переписывать id для всех методов