jhavenz/laravel-batch-update

Eloquent 模型批量更新

0.0.1 2022-10-03 23:05 UTC

README

当您不需要进行 'upsert'(Laravel 支持),也不需要 'insert' 时,总会有些缺失的部分。当您只需要更新所有行,每行都有不同的数据集时,这个包将帮助您。

要求

- PHP: >= 8.1

安装

您可以通过 composer 安装此包

composer require jhavenz/laravel-batch-update

使用方法

注意事项

  • 我已经在我的项目中稍微使用过这个包,并且到目前为止运行良好,但仍然处于婴儿期,我必须编写测试套件。如果您发现问题或有添加想法,请告知。
  • 我知道我在构建查询时绕过了绑定,但由于我通常在映射 100 多行并执行查询时使用此逻辑,因此我已经遇到了数据库的限制,其中存在“太多绑定”以供数据库引擎处理。

想法?.. 这样子更好,不是吗? 除非,当然,您正在将用户输入传递到您的数据库中...在这种情况下,我想象不出您会在用户等待时进行批量更新。

更新多行,每行都有其自己的值..您只想更新:(不是 updateOrCreate、upsert、findOrCreate 等),例如。

use Jhavenz\LaravelBatchUpdate\BatchedUpdate;

// 
(new BatchedUpdate(User::class))->update(
    values: [
        [
            'user_id' => 123,
            'name' => 'john doe',
            'email' => 'john@example.com',
        ],
        [
            'user_id' => 234,
            'name' => 'jane doe',
            'email' => 'jane@example.com',
        ],
        // ... a whole bunch of mapped data (in memory), then 1 query gets executed
    ],
    index: <string> /** Give an index here, or leave null and the Model's key will be used  */
    quoted: <bool> /** have you quoted the value, or should I ?..   */
);

测试

#TODO - composer test

更新日志

请参阅 更新日志 以获取有关最近更改的更多信息。

贡献

请参阅 贡献指南 以获取详细信息。

安全漏洞

请查看 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。