php - 如何根据两个键一起删除集合中的重复行
问题描述
我有数据库集合,我需要根据两个键一起删除重复的行
$messages = DB::table('users_mailbox')->where('msg_to', $username)->orderBy('id', 'desc')->paginate(10);
我试过了
$messages = $messages->unique('msg_from','ad_id);
这是我的回应
+"id": 39
+"ad_id": "2866527370"
+"msg_from": "aliman"
+"msg_to": "Haitham Hmaserv"
+"email": "amr@gmail.com"
+"show_email": 1
+"phone": "01002445900"
+"show_phone": 1
+"subject": "Re: akls;fdjl fa;dslkjf"
+"message": "sadklfjlkads ;jfkladjf"
+"is_read": 0
+"created_at": "2020-03-15 00:15:53"
+"updated_at": "2020-03-15 00:15:53"
但结果不正确。
解决方案
您不能使用多个键。unique
只有 2 个参数,$key
并且$strict
.
/**
* Return only unique items from the collection.
*
* @param string|callable|null $key
* @param bool $strict
* @return static|\Illuminate\Support\Collection
*/
public function unique($key = null, $strict = false)
{
if (! is_null($key)) {
return parent::unique($key, $strict);
}
return new static(array_values($this->getDictionary()));
}
您可以通过自己的回调来确定项目的唯一性:
$messages = $messages->unique(function ($item) {
return $item['msg_from'] . $item['ad_id'];
});
测试
array:10 [
0 => array:13 [
"id" => 1
"ad_id" => "2866527370"
"msg_from" => "Doe"
"msg_to" => "Andy"
"email" => "chet28@yahoo.com"
"show_email" => 1
"phone" => "+1333054551110"
"show_phone" => 1
"subject" => "Nesciunt sed temporibus nulla quis ducimus."
"message" => "Animi minus dolorem nostrum consectetur eos. Dolorum molestiae ea mollitia autem facilis numquam."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
1 => array:13 [
"id" => 2
"ad_id" => "2866576390"
"msg_from" => "Aliman"
"msg_to" => "Phil"
"email" => "konopelski.bianka@hotmail.com"
"show_email" => 1
"phone" => "+5618143199214"
"show_phone" => 1
"subject" => "Animi aut voluptas commodi quis."
"message" => "Quisquam similique expedita quos vitae exercitationem omnis nostrum. Nesciunt aut ut rerum ex rem."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
2 => array:13 [
"id" => 3
"ad_id" => "2866576390"
"msg_from" => "Doe"
"msg_to" => "Phil"
"email" => "shaina92@gmail.com"
"show_email" => 1
"phone" => "+8476237443387"
"show_phone" => 1
"subject" => "Et alias animi non vel repellendus."
"message" => "Dolor eaque cupiditate aut omnis. Sed aut voluptatibus cupiditate consequatur."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
3 => array:13 [
"id" => 4
"ad_id" => "2866576390"
"msg_from" => "Doe"
"msg_to" => "Natalia"
"email" => "gabrielle86@hotmail.com"
"show_email" => 1
"phone" => "+2733705925893"
"show_phone" => 1
"subject" => "Et earum et est voluptates voluptatibus rem."
"message" => "Voluptas eum aut qui aut ex qui ipsa. Illo ea cupiditate est sunt qui iusto ut qui."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
4 => array:13 [
"id" => 5
"ad_id" => "2866527370"
"msg_from" => "Aliman"
"msg_to" => "Andy"
"email" => "tracey.ledner@morar.com"
"show_email" => 1
"phone" => "+5870383075455"
"show_phone" => 1
"subject" => "Sunt numquam et voluptatem pariatur quibusdam sit."
"message" => "Ad possimus corrupti provident hic rem."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
5 => array:13 [
"id" => 6
"ad_id" => "2866576390"
"msg_from" => "John"
"msg_to" => "Natalia"
"email" => "emilie08@yahoo.com"
"show_email" => 1
"phone" => "+9398780932593"
"show_phone" => 1
"subject" => "Voluptates consectetur velit commodi deleniti."
"message" => "Excepturi iste molestiae error qui."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
6 => array:13 [
"id" => 7
"ad_id" => "2866576390"
"msg_from" => "Aliman"
"msg_to" => "Andy"
"email" => "reece.welch@yahoo.com"
"show_email" => 1
"phone" => "+4309027792891"
"show_phone" => 1
"subject" => "Dolor consequatur mollitia sed numquam cupiditate."
"message" => "Nisi alias non assumenda dolorem necessitatibus non."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
7 => array:13 [
"id" => 8
"ad_id" => "2866576390"
"msg_from" => "Aliman"
"msg_to" => "Phil"
"email" => "santina.mosciski@morissette.com"
"show_email" => 1
"phone" => "+7738160060411"
"show_phone" => 1
"subject" => "Iste at velit doloremque quas."
"message" => "Vel error consequuntur incidunt sed nam itaque ut."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
8 => array:13 [
"id" => 9
"ad_id" => "2866576390"
"msg_from" => "Aliman"
"msg_to" => "Natalia"
"email" => "kim.considine@gmail.com"
"show_email" => 1
"phone" => "+7742196820229"
"show_phone" => 1
"subject" => "Praesentium repellat quod omnis."
"message" => "Est et hic consequatur aut et omnis et. Sit perferendis et error eaque."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
9 => array:13 [
"id" => 10
"ad_id" => "2866527370"
"msg_from" => "Aliman"
"msg_to" => "Andy"
"email" => "lane38@conroy.com"
"show_email" => 1
"phone" => "+6448254479027"
"show_phone" => 1
"subject" => "Dolore velit aut perspiciatis."
"message" => "Eligendi et eos harum magni quo pariatur porro. Non non qui quae voluptatum et laboriosam reiciendis."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
]
结果
array:5 [
0 => array:13 [
"id" => 1
"ad_id" => "2866527370"
"msg_from" => "Doe"
"msg_to" => "Andy"
"email" => "chet28@yahoo.com"
"show_email" => 1
"phone" => "+1333054551110"
"show_phone" => 1
"subject" => "Nesciunt sed temporibus nulla quis ducimus."
"message" => "Animi minus dolorem nostrum consectetur eos. Dolorum molestiae ea mollitia autem facilis numquam."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
1 => array:13 [
"id" => 2
"ad_id" => "2866576390"
"msg_from" => "Aliman"
"msg_to" => "Phil"
"email" => "konopelski.bianka@hotmail.com"
"show_email" => 1
"phone" => "+5618143199214"
"show_phone" => 1
"subject" => "Animi aut voluptas commodi quis."
"message" => "Quisquam similique expedita quos vitae exercitationem omnis nostrum. Nesciunt aut ut rerum ex rem."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
2 => array:13 [
"id" => 3
"ad_id" => "2866576390"
"msg_from" => "Doe"
"msg_to" => "Phil"
"email" => "shaina92@gmail.com"
"show_email" => 1
"phone" => "+8476237443387"
"show_phone" => 1
"subject" => "Et alias animi non vel repellendus."
"message" => "Dolor eaque cupiditate aut omnis. Sed aut voluptatibus cupiditate consequatur."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
3 => array:13 [
"id" => 5
"ad_id" => "2866527370"
"msg_from" => "Aliman"
"msg_to" => "Andy"
"email" => "tracey.ledner@morar.com"
"show_email" => 1
"phone" => "+5870383075455"
"show_phone" => 1
"subject" => "Sunt numquam et voluptatem pariatur quibusdam sit."
"message" => "Ad possimus corrupti provident hic rem."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
4 => array:13 [
"id" => 6
"ad_id" => "2866576390"
"msg_from" => "John"
"msg_to" => "Natalia"
"email" => "emilie08@yahoo.com"
"show_email" => 1
"phone" => "+9398780932593"
"show_phone" => 1
"subject" => "Voluptates consectetur velit commodi deleniti."
"message" => "Excepturi iste molestiae error qui."
"is_read" => 0
"created_at" => "2020-03-22 04:19:54"
"updated_at" => "2020-03-22 04:19:54"
]
]
我建议您使用DISTINCT
而不是unique
收集方法。
推荐阅读
- c++ - free():只有一种情况下的指针无效
- node.js - 有和没有搜索字符串的数据表的 Mongodb 查询可以是什么
- clips - 如何在 CLIPS 中对事实进行组合和排列
- python-3.x - 从 Python 调用时,批处理文件不会运行
- swift - 为什么 CBCentralmanager 发现的所有设备的 name=null?
- python - 如何修复'TypeError:__init__()缺少1个必需的位置参数:'part''python中的错误
- mysql - 与日期函数一样
- python - 如何针对所有订单优化我的 n 阶衍生程序?
- node.js - Express JS 在新选项卡上呈现网页
- python - 将 for 循环移入 reduce 方法