Laravel雄辩,我该如何针对2列进行分组

时间:2018-11-11 09:35:56

标签: mysql laravel laravel-5 eloquent

我有一个如下所示的消息表:

  • id

  • user_id

  • target_user_id

  • 消息

我想做的是通过对话将它们分组。

因此一些典型的记录可能如下所示:

#1
user_id = 5
target_user_id = 10
message = hello
#2
user_id = 10
target_user_id = 5
message = hello
#3
user_id = 15
target_user_id = 20
message = hello
#2
user_id = 15
target_user_id = 20
message = hello

我想要实现的是如何将所有记录分组在一起,以便例如在用户5和10之间的所有消息都在一个组中,而在用户15和20之间的所有消息在一个组中并按最新顺序排序。

这是我目前的尝试

$msgs = Message::with('user')
     ->where(function($q) {
     $q->where('user_id', Auth::user()->id)
        ->orWhere('target_user_id', Auth::user()->id);
     })
     ->groupBy('user_id', 'target_user_id')
            ->get();

这不是重复的,因为问题和问题非常不同,并且解决方案建议如果您能看到的话,我已经在上面进行了尝试。

1 个答案:

答案 0 :(得分:0)

我想您可以像这样将它们分组:

let missed_votes_pct = [4.61, 0.53, 0.18, 0.89, 0.53, 2.3, 4.96,
  0.71, 0.35, 4.26, 0.35, 1.06, 0.89, 1.06,
  0.18, 0.89, 9.54, 0, 3.9, 4.26, 0.35, 1.77,
  0.35, 0.53, 5.67, 0.35, 1.42, 13.65, 2.66,
  0.18, 0.18, 6.38, 0.71, 8.51, 4, 0.35, 0.35,
  5.14, 0, 0.35, 0.53, 0.35, 4.61, 3.01, 4.43,
  2.13, 1.24, 1.7, 2.13, 10.99, 0.53, 2.09,
  0.53, 0.35, 0, 0.53, 0, 0.35, 3.01, 1.77,
  0.89, 0.53, 45.56, 2.48, 0, 14.89, 1.77,
  4.43, 3.19, 0.35, 2.84, 6.21, 3.55, 1.24,
  0.89, 0.71, 0, 0.89, 1.24, 1.6, 6.21, 2.48,
  1.06, 2.13, 0.18, 0.89, 65, 3.19, 0.89, 0,
  0.89, 3.4, 3.55, 1.06, 0, 3.37, 4.96, 1.06, 0.71,
  1.42
];


function getTenPerOfMissed(array) {
  var temp = [];
  var len = Math.ceil(array.length * 0.1);
  return array.splice(0, 10);

}


function bottomTenPercent(members) {
  let memsortedMems = members.sort(function(a, b) {
    return a - b;
  });

  return getTenPerOfMissed(memsortedMems)
}


function TopTenPercent(members) {
  let memsortedMems = members.sort(function(a, b) {
    return b - a;
  });
  return getTenPerOfMissed(memsortedMems);
}


console.log(bottomTenPercent(missed_votes_pct));
console.log(TopTenPercent(missed_votes_pct));