を介して2つのテーブルからデータを取得:Laravel雄弁は、私は、次の3つのテーブルを持っている中間テーブル
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
@Fallenは実際にはピボットテーブルを使用していません。だから彼はモデル ' – xhulio
'を' load() 'メソッドを使って試してみる必要があります。すなわちApp \ User :: load( 'tracker_geoip'); ' –