我对数据库有点陌生,我做了这个小数据库,但是在从中获取数据时遇到了问题。
我试图从登录的用户那里获取所有赛车手,但它正常工作,但是如果我输入$pigeons = $user->racer
,我只会得到赛车手表。我也想从鸽子表中了解赛手的属性。我已经将其与查询生成器一起加入表中了,但是我不确定如果不使用Laravel内部方法,为什么要建立这种关系。
在用户模型中,我具有以下关系:
public function pigeons(){
return $this->hasMany('App\Pigeon');
}
public function racers(){
return $this->hasManyThrough('App\Racer', 'App\Pigeon');
}
这是鸽子模型:
public function user(){
return $this->belongsTo('App\User');
}
public function racer(){
return $this->hasMany('App\Racer');
}
}
这是事件模型:
public function race(){
return $this->hasOne('App\Race');
}
public function racers(){
return $this->hasMany('App\Racer');
}
这是我的EventsController在可行的替代方法下的样子,注释掉了。
public function upcoming(){
$id = auth()->user()->id;
$user = User::find($id);
$pigeons = DB::table('racers')->leftJoin('pigeons', 'racers.pigeon_id', '=', 'pigeons.id')->where('pigeons.user_id', '=', $id)->get();
//$pigeons = $user->racers;
return view('events.upcoming')->with('pigeons', $pigeons);
}
这是我通过$ user-> racers或$ user-> racers()-> get()得到的:
[{“ id”:1,“ pigeon_id”:14,“ user_id”:4,“ event_id”:1,“ position”:0,“ created_at”:null,“ updated_at”:null},{“ id“:2,” pigeon_id“:15,” user_id“:4,” event_id“:1,” position“:0,” created_at“:null,” updated_at“:null},{” id“:3,” Pigeon_id“:16,” user_id“:4,” event_id“:1,” position“:0,” created_at“:null,” updated_at“:null}]
这就是我想要得到的,这也不正确,因为我应该得到id:1,但是我也想通过查看这些其他数据,例如性别,肤色,能力(但它们在赛鸽表中而不是在赛手中) )。
[{“ id”:14,“ pigeon_id”:14,“ user_id”:4,“ event_id”:1,“ position”:0,“ created_at”:“” 2018-09-27 10:01:04 “,” updated_at“:” 2018-09-27 10:01:04“,” gender“:” hen“,” color“:” blue“,” ability“:38},{” id“:15,” pigeon_id“:15,” user_id“:4,” event_id“:1,”位置“:0,” created_at“:” 2018-09-27 10:01:04“,” updated_at“:” 2018-09-27 10:01:04“,” gender“:” hen“,” color“:” blue“,” ability“:48},{” id“:16,” pigeon_id“:16,” user_id“:4,” event_id“:1,”位置“:0,” created_at“:” 2018-09-27 10:01:04“,” updated_at“:” 2018-09-27 10:01:04“,”性别“:”公鸡“,”颜色“:”蓝色“,”能力“:11}]
答案 0 :(得分:1)
要获得鸽子,您需要做的是$pigeons = $user->racers()->get();
。您可以在Laravel的官方文档https://laravel.com/docs/5.5/eloquent-relationships#introduction中看到一个示例。