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}");
}
none