PHPackages                             konnec/laravel-snowflake - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. konnec/laravel-snowflake

ActiveLibrary[Database &amp; ORM](/categories/database)

konnec/laravel-snowflake
========================

PDO Snowflake integration for Laravel framework

v0.2.3(1y ago)02.0kMITPHPPHP ^8.0

Since Mar 23Pushed 1y agoCompare

[ Source](https://github.com/cimd/laravel-snowflake)[ Packagist](https://packagist.org/packages/konnec/laravel-snowflake)[ Docs](https://github.com/konnec/laravel-snowflake)[ RSS](/packages/konnec-laravel-snowflake/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (2)Versions (5)Used By (0)

ODBC/Snowflake Integration for Laravel Framework
================================================

[](#odbcsnowflake-integration-for-laravel-framework)

This repository provides seamless integration of ODBC/Snowflake with Laravel Eloquent. It aims to create a comprehensive ODBC package for Laravel, while also functioning as a standalone solution.

Unlike the `odbc_*` functions, this package utilizes the `PDO` class, resulting in smoother and more convenient integration with Eloquent.

The primary goal of this package is to offer a standardized approach to connect with an ODBC connection. It supports custom grammars and schemas to accommodate various ODBC connections, such as Snowflake.

How to Install
--------------

[](#how-to-install)

Before proceeding, ensure that you have PHP version 8.x installed on your system.

To add the package to your project, run the following command:

```
composer require yoramdelangen/laravel-pdo-odbc
```

By default, the package will be automatically registered through the `package:discover` command.

Alternatively, you can manually register the service provider in the `app.php` file:

```
'providers' => [
  // ...
  LaravelPdoOdbc\ODBCServiceProvider::class,
];
```

If you intend to use the `snowflake_pdo` PHP extension, please follow the installation guide provided [here](https://github.com/snowflakedb/pdo_snowflake/)to set it up.

Starting from version `1.2.0`, the package includes support for `snowflake_pdo`, but it will still function without the Snowflake extension (via ODBC).

Configuration
-------------

[](#configuration)

The available driver flavors are:

- ODBC (generic)
- Snowflake (via ODBC and native through PHP extension)
- ...

### Snowflake Specific environment variables

[](#snowflake-specific-environment-variables)

You have the option to customize the Snowflake driver using the following parameters:

```
# When set to `false`, column names are automatically uppercased.
SNOWFLAKE_COLUMNS_CASE_SENSITIVE=false

# When set to `true`, column names are wrapped in double quotes and their
# case is determined by the input.
SNOWFLAKE_COLUMNS_CASE_SENSITIVE=true
```

Usage
-----

[](#usage)

Configuring the package is straightforward:

**Add a Database Configuration to `database.php`**

Starting from version 1.2, we recommend using the native Snowflake extension instead of ODBC, but we'll keep supporting it.

```
'snowflake_pdo' => [
    'driver' => 'snowflake_native',
    'account' => '{account_name}.eu-west-1',
    'username' => '{username}',
    'password' => '{password}',
    'database' => '{database}',
    'warehouse' => '{warehouse}',
    'schema' => 'PUBLIC', // change it if necessary.
    'options' => [
        // Required for Snowflake usage
        \PDO::ODBC_ATTR_USE_CURSOR_LIBRARY => \PDO::ODBC_SQL_USE_DRIVER
    ]
],
```

You have multiple ways to configure the ODBC connection:

1. Simple configuration using DSN only:

    ```
    'odbc-connection-name' => [
        'driver' => 'odbc',
        'dsn' => 'OdbcConnectionName', // odbc: will be prefixed
        'username' => 'username',
        'password' => 'password'
    ]
    ```

    or, if you don't have a datasource configured within your ODBC Manager:

    ```
    'odbc-connection-name' => [
        'driver' => 'odbc',
        'dsn' => 'Driver={Your Snowflake Driver};Server=snowflake.example.com;Port=443;Database={DatabaseName}',
        'username' => 'username',
        'password' => 'password'
    ]
    ```

    > Note: The DSN `Driver` parameter can either be an absolute path to your driver file or the name registered within the `odbcinst.ini` file/ODBC manager.
2. Dynamic configuration:

    ```
    'odbc-connection-name' => [
        'driver' => 'snowflake',
        // please change this path accordingly your exact location
        'odbc_driver' => '/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib',
        // 'odbc_driver' => 'Snowflake path Driver',
        'server' => 'host.example.com',
        'username' => 'username',
        'password' => 'password',
        'warehouse' => 'warehouse name',
        'schema' => 'PUBLIC', // most ODBC connections use the default value
    ]
    ```

    > All fields, except for `driver`, `odbc_driver`, `options`, `username`, and `password`, will be dynamically added to the DSN connection string.
    >
    > Note: The DSN `odbc_driver` parameter can either be an absolute path to your driver file or the name registered within the `odbcinst.ini`file/ODBC manager.

Eloquent ORM
------------

[](#eloquent-orm)

You can use Laravel, Eloquent ORM, and other Illuminate components as usual.

```
# Facade
$books = DB::connection('odbc-connection-name')
            ->table('books')
            ->where('Author', 'Abram Andrea')
            ->get();

# ORM
$books = Book::where('Author', 'Abram Andrea')->get();
```

Troubleshooting and more info
-----------------------------

[](#troubleshooting-and-more-info)

We have documented all weird behavious we encountered with the ODBC driver for Snowflake. In case of trouble of weird messages, checkout the following links:

- [Snowflake ODBC](docs/snowflake-odbc.md)
- [Snowflake ODBC Troubleshooting](docs/snowflake-odbc-troubleshooting.md)

Customization
-------------

[](#customization)

- [Custom `getLastInsertId()` Function](docs/custom-last-insert-id.md)
- [Custom Processor/QueryGrammar/SchemaGrammar](docs/custom-grammers.md)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance47

Moderate activity, may be stable

Popularity19

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 61.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

4

Last Release

395d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d4b1b2f579f508d759bcd287d4f913e59e95ae0ab01f7d2d1e2c9a099348c955?d=identicon)[cimd](/maintainers/cimd)

---

Top Contributors

[![yoramdelangen](https://avatars.githubusercontent.com/u/1531885?v=4)](https://github.com/yoramdelangen "yoramdelangen (57 commits)")[![nvzsolutions](https://avatars.githubusercontent.com/u/6881597?v=4)](https://github.com/nvzsolutions "nvzsolutions (13 commits)")[![andreossido](https://avatars.githubusercontent.com/u/33807066?v=4)](https://github.com/andreossido "andreossido (9 commits)")[![cimd](https://avatars.githubusercontent.com/u/9310762?v=4)](https://github.com/cimd "cimd (8 commits)")[![aiv-damian](https://avatars.githubusercontent.com/u/132932727?v=4)](https://github.com/aiv-damian "aiv-damian (4 commits)")[![nzscripps](https://avatars.githubusercontent.com/u/109313080?v=4)](https://github.com/nzscripps "nzscripps (1 commits)")[![sha1sum](https://avatars.githubusercontent.com/u/7863437?v=4)](https://github.com/sha1sum "sha1sum (1 commits)")

### Embed Badge

![Health badge](/badges/konnec-laravel-snowflake/health.svg)

```
[![Health](https://phpackages.com/badges/konnec-laravel-snowflake/health.svg)](https://phpackages.com/packages/konnec-laravel-snowflake)
```

###  Alternatives

[cybercog/laravel-love

Make Laravel Eloquent models reactable with any type of emotions in a minutes!

1.2k302.7k1](/packages/cybercog-laravel-love)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)[clickbar/laravel-magellan

This package provides functionality for working with the postgis extension in Laravel.

423715.4k1](/packages/clickbar-laravel-magellan)[genealabs/laravel-pivot-events

This package introduces new eloquent events for sync(), attach(), detach() or updateExistingPivot() methods on BelongsToMany relation.

1404.9M8](/packages/genealabs-laravel-pivot-events)[reedware/laravel-relation-joins

Adds the ability to join on a relationship by name.

2121.2M13](/packages/reedware-laravel-relation-joins)[aglipanci/laravel-eloquent-case

Adds CASE statement support to Laravel Query Builder.

115157.2k](/packages/aglipanci-laravel-eloquent-case)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
