我应该使用哪个Laravel查询来groupBy('author_id'),但保留最新的结果。目前我尝试的所有方法都会显示第一个结果。我已经尝试使用MAX(id)作为id SQL函数,但没有成功。
它可以找到记录,但只能找到组中的第一条记录。
以下是我正在使用的模型查询:
我也尝试过这个方法,但没有成功:
上述所有内容将返回作者组的第一行。我希望返回每个组的最后一行或最新行。我也尝试过 ->latest(),但没有结果!
感谢您提前的帮助。
我的表格:
id project_id author_id recipient_id message created_at updated_at
它可以找到记录,但只能找到组中的第一条记录。
以下是我正在使用的模型查询:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')->groupBy('author_id')->orderBy('created_at', 'DESC');
}
我还尝试过以下方法:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')
->select(DB::raw('*, max(id) as id))
->groupBy('author_id')
->orderBy('id', 'desc');
}
我也尝试过这个方法,但没有成功:
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')
->select(DB::raw('*, max(created_at) as created_at))
->groupBy('author_id')
->orderBy('created_at', 'desc');
}
上述所有内容将返回作者组的第一行。我希望返回每个组的最后一行或最新行。我也尝试过 ->latest(),但没有结果!
感谢您提前的帮助。
我的表格:
id project_id author_id recipient_id message created_at updated_at