首页 > 解决方案 > 如果有相同的数据,如何在 EAV laravel 中检索一个数据

问题描述

我有一个 EAV 实体属性值模型的数据库,如果有相同的数据,我如何只显示一次相同的数据?例如我有表用户

id  user_id     name   user_value_name   user_value
1     2         vandy  useraddress       new york
3     2         vandy  userscore_tesA    90
4     2         vandy  userscore_tesB    30
5     3         ahmad  useraddress       japan
6     3         ahmad  userscore_tesA    80
7     3         ahmad  userscore_tesB    70

如何让我的名字只显示一次?这里我将使用jquery select2来显示数据

$('#name').select2({
      placeholder: "Choose User...",
      ajax: {
        url: "{{ route('getUserFullname') }}",
        dataType: "json",
        delay: 250,
        processResults: function(data) {
          return {
            results: $.map(data, function(obj) {
                    return {
                    "id": obj.user_id,
                    "text": obj.name,
                    };
            })
          };
        },
      }
    });

在我的控制器中,我只从数据库和 json 的返回响应中获取数据

$user = DB::table(users)->get();
return response()->json($user);

标签: laravellaravel-5eloquentjquery-select2entity-attribute-value

解决方案


你可以使用distinctLaravel 的QueryBuilder中的方法来解决这个问题。

$user = DB::table(users)->distinct('name')->get();
return response()->json($user);

从本质上讲,这是 Laravel 中调用 SQL 的一种很好SELECT DISTINCT方式......


推荐阅读