使用Eloquent ORM从laravel中的3个表中选择数据

时间:2015-01-24 15:12:31

标签: laravel orm eloquent

我是laravel的新手,并坚持使用Eloquent ORM获取数据。

我的情景是我有3张桌子

  1. user - 包含用户信息
  2. location - 包含位置信息
  3. location_user - 包含用户ID,位置ID,用户访问该位置的时间。
  4. 现在,用户可以多次访问某个位置,并且多个用户可以访问某个位置。

    我想获取用户在特定日期访问过的所有位置名称。

    但无法得到。

    以下是数据库结构

    location_user表 - id user_id location_id visitedtime

    位置表 - id纬度经度位置

    用户表 - ID名称电话电子邮件

    并且在用户模型中我定义了关系

    public function locations()
    {
    return $this->belongsToMany('Location')->withPivot('visitedtime');
    }
    

    当我在控制器中使用此功能时,我获得该用户访问的所有位置

    User::find(2)->locations()->select('locations.locality',locations.id')->get()
    

    如何在上述函数

    上设置访问时间条件

1 个答案:

答案 0 :(得分:1)

User::find(2)
     ->locations()
     ->select('locations.locality',locations.id')
     ->where('pivot_visitedtime', $someDate)
     // or
     // ->where('location_user.visitedtime', $someDate)
     ->get()

// and for $someDate you can use Carbon bc it's stupid-simple, eg.:
$someDate = Carbon::parse('yesterday');