【发布时间】:2018-08-16 19:20:38
【问题描述】:
我有一个访问模型,我得到了我想要的数据:
$app_visits = Visit::select([
'start',
'end',
'machine_name'
])->where('user_id', $chosen_id)->get();
但我想为每次访问加分。每次访问都有一个交互(但没有visit_id(因为其他系统无法添加)。
上一个开发者是这样离开的:
$interactions = Interaction::where([
'machine_name' => $app_visit->machine_name,
])->whereBetween('date', [$app_visit->start, $app_visit->end])->get();
$points = 0;
foreach ($interactions as $interaction) {
$points += (int)$interaction->app_stage;
}
$app_visits[$key]['points'] = $points
但我真的不喜欢它,因为它又慢又乱。我只想在第一个查询中添加“点”总和,只触摸一次数据库。
@edit 有人询问数据库结构:
访问:
|id | start | end | machine_name | user_id
互动:
|id | time | machine_name | points
【问题讨论】:
-
发布你的数据库结构
标签: database laravel select join eloquent