得到兩個表的數據,我有以下三個表:Laravel雄辯通過中間表
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()'方法。即App \ User :: load('tracker_geoip');' –