【问题标题】:select data from 3 tables in laravel by using Eloquent ORM使用 Eloquent ORM 从 laravel 中的 3 个表中选择数据
【发布时间】:2015-03-23 11:54:34
【问题描述】:

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

我的场景是我有 3 张桌子

  1. 用户 - 包含用户信息
  2. location - 包含位置信息
  3. location_user - 包含用户 ID、位置 ID、用户访问该位置的时间。

现在一个用户可以多次访问一个位置,并且一个位置可以被多个用户访问。

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

但是拿不到。

下面是db结构

location_user 表 - id user_id location_id 访问时间

位置表-id纬度经度位置

用户表 - id 姓名 电话 电子邮件

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

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

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

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

如何在上述函数上设置visitedtime的条件

【问题讨论】:

    标签: laravel orm eloquent


    【解决方案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');
    

    【讨论】:

    • 嗨 Jarek,谢谢您的解决方案。我可以从结果中排除数据透视数据吗?
    猜你喜欢
    • 2021-01-19
    • 1970-01-01
    • 2017-10-02
    • 2020-11-08
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多