Skip to content

Instantly share code, notes, and snippets.

@rtplv
Created August 4, 2020 22:00
Show Gist options
  • Save rtplv/29e1196a36e53d338d45bf2799fa6938 to your computer and use it in GitHub Desktop.
Save rtplv/29e1196a36e53d338d45bf2799fa6938 to your computer and use it in GitHub Desktop.
Postgres array, Laravel workaround
/**
 * Превращает массив PHP, в массив Postgres
 * @param array $pgArray
 * @return Expression
 */
static function createPgArray(array $pgArray): Expression
{
    $pgArray = json_encode($pgArray, JSON_UNESCAPED_UNICODE);
    $pgArray = "'".preg_replace("#^\[(.*)\]$#", '{\1}', $pgArray)."'";

    return \DB::raw($pgArray);
}

/**
 * Превращает массив Postgres, в массив PHP
 * @param string $pgArray
 * @return array
 */
static function extractPgArray(string $pgArray): array
{
    return json_decode(str_replace(['{', '}'], ['[', ']'], $pgArray));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment