maatwebsite/Excel 导入如果数据库已经有了,怎么去重?

在导入的时候,如果数据库中已经有了,怎么去重?
数据库中有就不插入,没有就插入。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 13
liyu001989

file

可以自己过滤一下

5年前 评论

updateOrCreate

5年前 评论

User::updateOrCreate($data);

5年前 评论

@liyu001989 可以了,感谢,不过就是有点慢了,
Excel数据10000条,
服务器:2核4G,Ubuntu
等待时间:53s

5年前 评论
liyu001989

@会尿尿的大鲨鱼 想办法不要每一条都进行一次查询,批量查出一批过滤掉,可能会快很多

5年前 评论
running8

如果要把上传的文章的分类,在表单input里提交,怎么在拿到这个参数一并写到表里呢。

.
怎么把表单参数传时这个类里呢:
public function model(array $row)
{
$topic = new Topic([
'title' => $row['标题'],
'category_id' => (int)$row['分类id'],
]);
$topic->user_id = (int)$row['用户id'];

    return $topic;
5年前 评论

@liyu001989 对导入数据进行过滤这块是必不可少的一个环节,能不能详细讲一下,新手看英文文档理解起来很吃力啊

5年前 评论
liyu001989

@DanielDu 英文文档是必须要看的,以后你会遇到千千万万的英文文档。

或者你能给出一个真实的场景,哪里遇到了麻烦,我可以考虑做个视频讲解一下

5年前 评论
liyu001989

@running8 这个 import 是个对象,就是怎么给对象传值? 写个 setFoo 之类的方法,赋值给属性啊。
或者你 new 的时候 传给 __construct

5年前 评论

@liyu001989 文档的解释过于简单,编程新手基础差,实在看不懂。比如文档中Row Validation下面这段就不知道这个规则时如何运行的。若要举个现实场景,比如电商管理里面,订单的数据导入,订单号不能重复,如有重复应该报错提示或者忽略错误行将其他行直接导入,这种应该是最常用的场景。

public function rules(): array
    {
        return [
            '1' => Rule::in(['patrick@maatwebsite.nl']),

             // Above is alias for as it always validates in batches
             '*.1' => Rule::in(['patrick@maatwebsite.nl']),
        ];
    }
5年前 评论
liyu001989

@DanielDu Row Validation 就跟表单验证一样的写法,类似这样。

    public function rules(): array
    {
        return [
            '标题' => 'required|string',
            '分类id' => 'required|boolean|exists:categories,id',
        ];
    }

我想想怎么补充一下视频内容

5年前 评论
lizhiqiang666

数据库对组合字段设置唯一索引 Unique

5年前 评论

@liyu001989 导入验证这块还补充吗?等好久都没看到更新

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!