select 来自 laravel 中 3 个表的数据,使用 Eloquent ORM
select data from 3 tables in laravel by using Eloquent ORM
我是 laravel 的新手,一直坚持使用 Eloquent ORM 获取数据。
我的情况是我有 3 tables
- user - 包含用户信息
- 位置 - 包含位置信息
- location_user - 包含用户 ID、位置 ID、用户访问该位置的时间。
现在一个用户可以多次访问一个位置,一个位置可以被多个用户访问。
我想获取用户在特定日期访问过的所有位置名称。
但是无法获取。
下面是数据库结构
location_user table - id user_id location_id visitedtime
位置table - id 纬度经度地点
用户 table - id 名称 phone 电子邮件
并且在用户模型中我定义了关系
public function locations()
{
return $this->belongsToMany('Location')->withPivot('visitedtime');
}
当我在控制器中使用此功能时,我会得到该用户访问过的所有位置
User::find(2)->locations()->select('locations.locality',locations.id')->get()
如何在上面的函数上设置 visitedtime 的条件
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');
我是 laravel 的新手,一直坚持使用 Eloquent ORM 获取数据。
我的情况是我有 3 tables
- user - 包含用户信息
- 位置 - 包含位置信息
- location_user - 包含用户 ID、位置 ID、用户访问该位置的时间。
现在一个用户可以多次访问一个位置,一个位置可以被多个用户访问。
我想获取用户在特定日期访问过的所有位置名称。
但是无法获取。
下面是数据库结构
location_user table - id user_id location_id visitedtime
位置table - id 纬度经度地点
用户 table - id 名称 phone 电子邮件
并且在用户模型中我定义了关系
public function locations()
{
return $this->belongsToMany('Location')->withPivot('visitedtime');
}
当我在控制器中使用此功能时,我会得到该用户访问过的所有位置
User::find(2)->locations()->select('locations.locality',locations.id')->get()
如何在上面的函数上设置 visitedtime 的条件
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');