过滤 laravel 中的重复外键


Filtering duplicated foreign key in laravel

>我有这种数据

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');
 }

在我的控制器中时

$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,只显示最新的日期。

怎么做?

更新:

感谢终点站指出类似的问题在这里,但如何以雄辩的方式做到这一点?由于解决方案使用

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

Laravel中是否有任何雄辩的方法可以改善最大日期的博客?

更新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查询方面有专业知识的人...请帮助我..我坚持在堆栈溢出中声称解决方案有效的每个问题......但就我而言,它没有按照我想要的方式工作......

我相信

这会完成这项工作。

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

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