У меня есть следующие три таблицы:Laravel Eloquent получить данные из двух таблиц через промежуточную таблицу
users
id - integer
name - string
tracker_sessions
id - integer
user_id - integer
geoip_id - integer
tracker_geoip
id - integer
country - string
Это мои модели:
class User extends Authenticatable
{
public function tracker_geoip(){
return $this->hasManyThrough('App\TrackerGeo', 'App\TrackerSession', 'geoip_id', 'id', 'id');
}
public function tracker_sessions(){
return $this->hasMany('App\TrackerSession');
}
}
class TrackerGeo extends Model
{
protected $table = 'tracker_geoip';
}
class TrackerSession extends Model
{
protected $table = 'tracker_sessions';
}
Можно ли получить этот результат с помощью красноречивых? :
0 => [
'name' => 'John Smith',
'geoip' => ['id' => 12, 'country' => 'Greenland']
]
Я попытался это:
$usersWithGeo = App\User::with('tracker_geoip')->get()->toArray();
Это делает возвращает массив информации о пользователе, но массив tracker_geoip к югу всегда пусто, даже если есть записи в таблицах.
Зачем вам нужна модель для * tracker_sessions *? Laravel будет обрабатывать отношения «многие ко многим» автоматически для вас. – TheFallen
@ TheFallen на самом деле он не использует сводную таблицу. так что ему нужна модель – xhulio
, вы пробовали использовать метод 'load()'. i.e 'App \ User :: load ('tracker_geoip');' –