У меня есть 3 таких таблицы:

User:
- user_id
- name

Location_user:
- loc_id
- loc_loc_id
- loc_user_id

Location:
- location_id
- location_name

Таким образом, пользователи могут принадлежать к 4 местоположениям, поэтому таблица «location_user» будет содержать 4 записи для этого пользователя.

На данный момент я могу позвонить пользователям и получить список их местоположений, но только на основе идентификатора, используя:

public function locations()
{
    return $this->hasMany('App\Location_user', 'loc_user_id');
}

Как я уже сказал, это вернется со всеми местоположениями, принадлежащими этому пользователю, но я хочу получить имена этих местоположений вместо идентификаторов или даже обоих.

Любые идеи? Я новичок в laravel, поэтому еще не пришлось этого делать.

РЕДАКТИРОВАТЬ:

Вызывается: $ results = User :: with ('location') -> get ();

0
Sam 22 Фев 2016 в 17:15

2 ответа

Лучший ответ

Закончилось использованием:

public function locations() {
    return $this->belongsToMany('App\Location', 'location_user', 'loc_user_id', 'loc_loc_id')->withTimestamps('loc_updated','loc_created');
}

Поскольку я использовал собственные имена столбцов, я указал их, а также включил временные метки, поскольку они мне были нужны

0
Sam 30 Мар 2016 в 10:55

Вы хотите, чтобы отношения "многие ко многим" не имели. Измените свою функцию на

public function locations()
{
  return $this->BelongsToMany('App\Location_user', 'Location_user');
}
0
oseintow 22 Фев 2016 в 14:31