php - Laravel 中过滤重复的外键

标签 php mysql sql laravel laravel-5

我有这样的数据

id|no.BA|name|value|date
1 |22   |test|11111|30/11/2015
2 |22   |test|11144|31/12/2015
3 |34   |tttt|24455|31/12/2015
4 |44   |kkkk|33332|30/11/2015
5 |44   |kkkk|44433|31/12/2015
6 |44   |kkkk|67677|31/01/2016

no.BA是外键,id是我的主键,在模型中我只使用它属于

 public function cuprimer(){
    return $this->belongsTo('App\Models\Cuprimer','cu','id');
 }

在我的 Controller 中

$datas = PerkembanganCU::with('cuprimer')->orderBy('cu','asc')->get();

但我想展示的是

id|no.BA|name|value|date
2 |22   |test|11144|31/12/2015
3 |34   |tttt|24455|31/12/2015
6 |44   |kkkk|67677|31/01/2016

所以我不需要重复的 no.BA 22 和 44,只显示根据日期最新的一个。

如何做到这一点?

更新:

感谢总站指出类似问题 in here但如何以 Eloquent 方式做到这一点呢?因为解决方案使用

  $rows = DB::table('papers')
               ->select(DB::raw('id, max(paper_update) as year,user_id'))
               ->groupBy('user_id')
               //->orderBy('paper_update', 'desc')
               ->get();

laravel 中有没有什么 Eloquent 方法来改进 belogsTo 的最大日期?

更新2: 因此,经过一些研究后,我得到了这一点

$datas = Article::with('category')->groupby('no.BA')-get();

它只会显示每个 no.BA 中的一个,但它还不完整..因为它只显示我输入/保存到数据库中的每个 no.BA 的第一个...我仍然需要指定仅显示最新日期或在本例中显示最大日期...

所以我已经快到了,但还没有完全达到......

更新3

所以几天前我想找到解决方案并将其添加到答案部分。

$datas = PerkembanganCU::with('cuprimer')
                ->orderBy('date','desc')->groupby('cu')
                ->whereRaw('date= (select max(`date`) from perkembangancu)')
                ->get();

但今天在我尝试添加真实数据后,我发现这段代码有一个很大的缺陷。就像上面的数据一样...它只会显示最大日期的数据

id|no.BA|name|value|date
6 |44   |kkkk|67677|31/01/2016

所以请任何在sql查询方面有专业知识的人...请帮助我..我陷入了stackoverflow中声称解决方案有效的每个问题...但就我而言,它没有按照我想要的方式工作...

最佳答案

我相信这会完成工作。

use App\Models\Cuprimer;
$rows = Cuprimer::groupBy('no.BA')
    ->havingRaw('COUNT(*) > 1')
    ->get();

如果这不起作用,请尝试使用havingRaw()删除该行。

关于php - Laravel 中过滤重复的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38287243/

相关文章:

sql - SSIS 日期函数

sql - Spark 1.3 中未找到命令策略类

来自 godaddy 服务器的 php mail()

php - 预防&磅;被回显 : why doesn't the actual symbol show?

php - 从zend框架2中的另一个模块获取数据

php - 将sql结果集转换为字符串,php

mysql - 搜索其他记录中包含的字段内容

php - 如何使用网络摄像头拍照并将图片直接上传或自动上传到我的 php 表单中

php - CakePHP3 : How to run custom SQL query in table model

php - SQL触发器和技术债务