如何查询Laravel雄辩

克博伊斯

我是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通过精选来获取游戏。

尼尔斯·卢卡斯(Niels Lucas)

您几乎正确了。

您的用户模型关系应与尝试访问的类(在后台处理的所有表)相匹配。

    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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章