thinkphp在PostgreSQL下兼容ON CONFLICT DO NOTHING处理方法

由于thinkphp只对Mysql有INSERT IGNORE方法,PostgreSQL是ON CONFLICT  DO NOTHING方法,但是thinkphp orm一直没有支持,只能暂时在model用这个方法.

use think\facade\Db;

    public static function insertIgnore(array $data, string $conflictTarget = null): int
    {
        $rawSql = static::fetchSql(true)->insert($data);

            sql = "ON CONFLICT DO NOTHING";

        if ($conflictTarget) {
            $sql = "ON CONFLICT {$conflictTarget}  DO NOTHING";
        }
        return Db::execute("{$rawSql} {$sql}");
    }

添加新评论 »