【问题标题】:Laravel : Filtering Eloquent Collections by unique column value after retrievalLaravel:检索后按唯一列值过滤雄辩的集合
【发布时间】:2014-11-10 07:39:28
【问题描述】:

从 laravel 文档中我们知道,我们可以在从数据库检索后通过应用过滤器来过滤 Eloquent 集合:

$users = $users->filter(function($user)
{
    return $user->isAdmin();
});

有谁知道我们是否可以通过不是主键的唯一列/属性来过滤集合?

已编辑:假设我有一列 slug,我想根据不同的 slug 值过滤集合,同时删除重复项。

【问题讨论】:

  • 您要过滤哪一列?你能提供更多信息吗?
  • @Jerodev 编辑了问题。
  • 那么,您只想要所有不同的蛞蝓?还是您也想获取用户数据?在这种情况下,您希望第一个用户还是其他用户拥有这些数据?
  • @Jerodev 是的,我仍然需要用户数据,但只有第一个具有不同 slug 的用户。其余的可以删除
  • 为什么不使用 MySQL 的 distinct 操作符呢?

标签: php database laravel eloquent


【解决方案1】:

我知道这是旧的,但你可以尝试这样的:

$existingSlugs = [];
$users = $users->filter(function($user) use (&$existingSlugs)
{
    $duplicate = in_array($user->slug, $existingSlugs);
    if(!$duplicate) {
        $existingSlugs[] = $user->slug;
    }
    return !$duplicate;
});

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 2015-03-04
    • 2017-06-07
    • 2018-09-16
    • 1970-01-01
    • 2013-09-08
    • 2015-08-15
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多