我是Laravel的新手。我对laravel关系有疑问。你们能帮我吗?
我有四个表:
1.用户
2.团队
3.游戏
4.选秀权
选择是我的中间表模型
1. id
2. user_id
3. team_id
4。game_id
用户类别
class User extends Model
{
public function picks()
{
return $this->hasMany('App\Models\Pick');
}
}
团队班
class Team extends Model
{
public function picks()
{
return $this->hasMany('App\Models\Pick');
}
}
游戏类
class Game extends Model
{
public function picks()
{
return $this->hasMany('App\Models\Pick');
}
}
class Pick extends Model
{
public function users()
{
return $this->belongsToMany('App\Models\User');
}
public function teams()
{
return $this->belongsToMany('App\Models\Team');
}
public function schedules()
{
return $this->belongsToMany('App\Models\Schedule');
}
}
如何将该查询转换为雄辩的?
"SELECT * FROM `games` AS g LEFT JOIN `picks` as p ON p.game_id = g.id LEFT JOIN `users` as u ON u.id = p.user_id WHERE u.id = 1;"
我想通过用户ID通过精选来获取游戏。
您几乎正确了。
您的用户模型关系应与尝试访问的类(在后台处理的所有表)相匹配。
class User extends Model
{
public function games()
{
return $this->belongsToMany(Games::class, 'picks'); <-- i prefer this over string
}
}
然后您可以在控制器中的某个位置执行此操作
$user = User::find(1);
$games = $user->games; <-- should work but if not
$games = $user->games()->get() <-- has to do with lazy loading.
编辑:我更改表以选择在关系
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句