【问题标题】:Update Duplicate Data when insert data in laravel在 laravel 中插入数据时更新重复数据
【发布时间】:2015-06-26 23:37:53
【问题描述】:

您好,我已搜索并尝试解决该问题,但未能找到解决方案,抱歉耽误您的时间。 我正在使用查询生成器在 laravel 中插入一组数据,以便一次插入多个数据。

DB::table('table')->insert(
array(
    array(
        'col1' => 'data1',
        'col2' => 'data1'
    ),
    array(
        'col1' => 'data2', 
        'col2' => 'data2'
    ),
)
);

有没有办法检查表中的col1,col2 值是否存在,如果存在则更新,否则插入。如果所有数据都成功更新或插入,我想从查询结果中返回truefalse。我想用 laravel 查询生成器解决它。 谢谢

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    据我所知,Laravel 查询构建器不支持此功能。 你可以做一个原始的 MySQL 查询:

    INSERT INTO table (a,b,c) VALUES (1,2,3)
    ON DUPLICATE KEY UPDATE c=c+1;
    

    https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

    但这很混乱,而且是特定于 MySQL 的。

    相反,我建议您使用 Eloquent ORM:

    // Retrieve the flight by the attributes, or create it if it doesn't exist...
    $flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);
    

    http://laravel.com/docs/5.1/eloquent#inserting-and-updating-models

    【讨论】:

    • first 或 create 不会占用太多键和值我已经尝试过了
    • 是的,您需要循环数据,因为它会尝试一次获取或创建一个模型。
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2013-08-09
    • 2018-06-15
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多