{"id":33960110,"url":"https://github.com/singlestore-labs/singlestoredb-laravel-driver","last_synced_at":"2025-12-12T21:42:05.616Z","repository":{"id":37728706,"uuid":"475510006","full_name":"singlestore-labs/singlestoredb-laravel-driver","owner":"singlestore-labs","description":"The official SingleStore Laravel driver.","archived":false,"fork":false,"pushed_at":"2025-07-24T11:22:45.000Z","size":233,"stargazers_count":231,"open_issues_count":6,"forks_count":24,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-12-09T14:49:09.288Z","etag":null,"topics":["connection","database","driver","hacktoberfest","laravel","mysql","php","query","singlestore","singlestoredb","sql"],"latest_commit_sha":null,"homepage":"https://github.com/singlestore-labs/singlestore-laravel-driver","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/singlestore-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-29T15:41:05.000Z","updated_at":"2025-10-31T11:56:48.000Z","dependencies_parsed_at":"2024-10-28T17:31:09.657Z","dependency_job_id":null,"html_url":"https://github.com/singlestore-labs/singlestoredb-laravel-driver","commit_stats":{"total_commits":91,"total_committers":13,"mean_commits":7.0,"dds":0.6813186813186813,"last_synced_commit":"72ec5ff0a75e8721b6eaf265672d68d9c3d9ed57"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/singlestore-labs/singlestoredb-laravel-driver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singlestore-labs%2Fsinglestoredb-laravel-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singlestore-labs%2Fsinglestoredb-laravel-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singlestore-labs%2Fsinglestoredb-laravel-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singlestore-labs%2Fsinglestoredb-laravel-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/singlestore-labs","download_url":"https://codeload.github.com/singlestore-labs/singlestoredb-laravel-driver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singlestore-labs%2Fsinglestoredb-laravel-driver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27692498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-12T02:00:06.775Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["connection","database","driver","hacktoberfest","laravel","mysql","php","query","singlestore","singlestoredb","sql"],"created_at":"2025-12-12T21:42:03.555Z","updated_at":"2025-12-12T21:42:05.596Z","avatar_url":"https://github.com/singlestore-labs.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SingleStore Driver for Laravel \u003c!-- omit in toc --\u003e\n\n[![Latest Stable Version](https://poser.pugx.org/singlestoredb/singlestoredb-laravel/v)](https://packagist.org/packages/singlestoredb/singlestoredb-laravel) [![Total Downloads](https://poser.pugx.org/singlestoredb/singlestoredb-laravel/downloads)](https://packagist.org/packages/singlestoredb/singlestoredb-laravel) [![License](https://poser.pugx.org/singlestoredb/singlestoredb-laravel/license)](https://packagist.org/packages/singlestoredb/singlestoredb-laravel) [![PHP Version Require](https://poser.pugx.org/singlestoredb/singlestoredb-laravel/require/php)](https://packagist.org/packages/singlestoredb/singlestoredb-laravel) [![Github Actions status image](https://github.com/singlestore-labs/singlestoredb-laravel-driver/actions/workflows/tests.yml/badge.svg)](https://github.com/singlestore-labs/singlestoredb-laravel-driver/actions)\n\nThis repository contains the official SingleStoreDB Driver for Laravel. This driver wraps the official MySQL support in Laravel in order to make it work nicer with SingleStoreDB. Specifically, this driver provides the following advantages over vanilla Laravel MySQL support:\n\n- Extensions to Eloquent allowing specific SingleStoreDB features to be specified through the Eloquent api. See [Migrations](#migrations) for supported features.\n- Integration tested against SingleStoreDB across a matrix of PHP and Laravel versions.\n- JSON column support\n- Other compatibility fixes in query generation\n\n## TOC \u003c!-- omit in toc --\u003e\n\n- [Install](#install)\n- [Usage](#usage)\n- [Issues connecting to SingleStore Managed Service](#issues-connecting-to-singlestore-managed-service)\n- [Persistent Connections (performance optimization)](#persistent-connections-performance-optimization)\n- [Order by in delete and update](#order-by-in-delete-and-update)\n- [PHP Versions before 8.1](#php-versions-before-81)\n- [Migrations](#migrations)\n  - [Universal Storage Tables (Columnstore)](#universal-storage-tables-columnstore)\n  - [Rowstore Tables](#rowstore-tables)\n  - [Reference Tables](#reference-tables)\n  - [Global Temporary Tables](#global-temporary-tables)\n  - [Sparse Columns](#sparse-columns)\n  - [Sparse Tables](#sparse-tables)\n  - [Shard Keys](#shard-keys)\n  - [Sort Keys](#sort-keys)\n  - [Unique Keys](#unique-keys)\n  - [Hash Keys](#hash-keys)\n  - [Series Timestamps](#series-timestamps)\n  - [Computed Columns](#computed-columns)\n  - [Increment Columns without Primary Key](#increment-columns-without-primary-key)\n  - [Full-text search using FULLTEXT indexes](#full-text-search-using-fulltext-indexes)\n- [Testing](#testing)\n- [License](#license)\n- [Resources](#resources)\n- [User agreement](#user-agreement)\n\n## Install\n\nYou can install the package via composer:\n\n```shell\ncomposer require singlestoredb/singlestoredb-laravel\n```\n\n**This package requires pdo_mysql** to be installed. If you aren't sure check to see if `pdo_mysql` is listed when you run `php -i`.\n\n## Usage\n\nTo enable the driver, head to your `config/database.php` file and create a new entry for SingleStore in your `connections`, and update your `default` to point to that new connection:\n\n```php\n[\n    'default' =\u003e env('DB_CONNECTION', 'singlestore'),\n\n    'connections' =\u003e [\n        'singlestore' =\u003e [\n            'driver' =\u003e 'singlestore',\n            'url' =\u003e env('DATABASE_URL'),\n            'host' =\u003e env('DB_HOST'),\n            'port' =\u003e env('DB_PORT'),\n            'database' =\u003e env('DB_DATABASE'),\n            'username' =\u003e env('DB_USERNAME'),\n            'password' =\u003e env('DB_PASSWORD'),\n            'unix_socket' =\u003e env('DB_SOCKET'),\n            'charset' =\u003e 'utf8mb4',\n            'collation' =\u003e 'utf8mb4_unicode_ci',\n            'prefix' =\u003e '',\n            'prefix_indexes' =\u003e true,\n            'strict' =\u003e true,\n            'engine' =\u003e null,\n            'options' =\u003e extension_loaded('pdo_mysql') ? array_filter([\n                PDO::MYSQL_ATTR_SSL_CA =\u003e env('MYSQL_ATTR_SSL_CA'),\n                PDO::ATTR_EMULATE_PREPARES =\u003e true,\n            ]) : [],\n        ],\n    ]\n]\n```\n\n\u003e The SingleStore driver is an extension of the MySQL driver, so you could also just change your `driver` from `mysql` to `singlestore`.\n\nIn case you want to store failed jobs in SingleStore, then make sure you also set it as the `database` in your `config/queue.php` file. At which point, you may actually prefer to set `DB_CONNECTION='singlestore'` in your environment variables.\n\n```php\n'failed' =\u003e [\n    'driver' =\u003e env('QUEUE_FAILED_DRIVER', 'database-uuids'),\n    'database' =\u003e env('DB_CONNECTION', 'singlestore'),\n    'table' =\u003e 'failed_jobs',\n],\n```\n\n## Issues connecting to SingleStore Managed Service\n\nIf you are encountering issues connecting to the SingleStore Managed Service, it may be due to your environment not being able to verify the SSL certificate used to secure connections. You can fix this by downloading and manually specifying the SingleStore certificate file.\n\n* [Download the file here][singlestore-pem]\n* In the Laravel SingleStore connection configuration, point the variable `PDO::MYSQL_ATTR_SSL_CA` at `singlestore_bundle.pem`:\n\n```php\n'options' =\u003e extension_loaded('pdo_mysql') ? array_filter([\n    PDO::MYSQL_ATTR_SSL_CA =\u003e 'path/to/singlestore_bundle.pem',\n    PDO::ATTR_EMULATE_PREPARES =\u003e true,\n]) : [],\n```\n\n## Persistent Connections (performance optimization)\n\nIn general, we recommend enabling `PDO::ATTR_PERSISTENT` when connecting to SingleStoreDB. This is because opening new connections to SingleStoreDB is very expensive compared to running many transactional queries. By using `PDO::ATTR_PERSISTENT`, you can greatly improve the performance of transactional workloads.\n\nThe only downside to using persistent connections is that you need to ensure that transactions are correctly cleaned up as well as being careful when changing session variables or the context database. [You can read more about this feature in the official documentation on php.net][attr_persistent].\n\nAlso, note that SingleStoreDB in it's default configuration can handle very large numbers of idle connections with no performance impact. The default is roughly 100,000 idle connections per aggregator, but that can be set much higher if your server can handle it.\n\nTo enable this feature, simply update your options to include `PDO::ATTR_PERSISTENT =\u003e true`:\n\n```php\n'options' =\u003e extension_loaded('pdo_mysql') ? array_filter([\n    PDO::MYSQL_ATTR_SSL_CA =\u003e env('MYSQL_ATTR_SSL_CA'),\n    PDO::ATTR_EMULATE_PREPARES =\u003e true,\n    PDO::ATTR_PERSISTENT =\u003e true,\n]) : [],\n```\n\n## `ORDER BY` Clause in `DELETE` and `UPDATE` Queries\n\nSingleStore does not support the `ORDER BY` clause in the `DELETE` and `UPDATE` queries.\nIssuing queries similar to the following will return an error. \n\n```php\nDB::table('test')-\u003eorderBy('id', 'asc')-\u003eupdate(['id' =\u003e 1, 'a' =\u003e 'b']);\nDB::table('test')-\u003eorderBy('id', 'asc')-\u003edelete();\n```\n\nYou can configure the driver to ignore `orderBy` in `delete()` and `update()` requests by enabling `ignore_order_by_in_deletes` and\n`ignore_order_by_in_updates` in the connection configuration, respectively. For example:\n\n```php\n[\n    'default' =\u003e env('DB_CONNECTION', 'singlestore'),\n\n    'connections' =\u003e [\n        'singlestore' =\u003e [\n            'driver' =\u003e 'singlestore',\n            'ignore_order_by_in_deletes' =\u003e true,\n            'ignore_order_by_in_updates' =\u003e true,\n            ...\n        ],\n    ]\n]\n```\n\nNote that when `orderBy` is ignored, it may result in deletion/update of different rows if query contains LIMIT or OFFSET. \n\nExample:\n```php\nDB::table('user')-\u003eorderBy('score', 'asc')-\u003elimit(5)-\u003edelete();\n```\nIn the following query when ORDER BY is ignored - 5 random users will be deleted instead of 5 users with the lowest score.\n\n## PHP Versions before 8.1\n\nIn PHP versions before 8.1, the flag `PDO::ATTR_EMULATE_PREPARES` results in a bug by which all attributes returned by MySQL (and\nSingleStoreDB) are returned as strings.\n\nFor example, a table with a column named `user_id` and a type of `int(10)`, if the row value is `5423` we would\nget a string like `\"5423\"` in PHP.\n\nThis is a historic and known bug:\n\n- https://stackoverflow.com/a/58830039/3275796\n- https://github.com/php/php-src/blob/7b34db0659dda933b1146a0ff249f25acca1d669/UPGRADING#L130-L134\n\nThe best method to solve this is to upgrade to PHP 8.1 or higher. If that's not possible, [Eloquent's attribute casting] is the next best solution. \n\n## Migrations\n\nThis driver provides many SingleStore specific methods for creating or modifying tables. They are listed below. For more information see the [create table] docs on SingleStore.\n\n### Universal Storage Tables (Columnstore)\n\nBy default, tables created by this driver will use [SingleStoreDB Universal Storage][columnstore]. Universal Storage leverages both column and row oriented data structures to automatically optimize storage for transactional and analytical workloads. In general, you should use this table type for all tables unless you profile your workload and determine that another table type is better.\n\nTo create a table, you can simply use `Schema::create`:\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    // ... column definitions, indexes, table options\n});\n```\n\n### Rowstore Tables\n\nTo create a [rowstore] table, use the `rowstore` method. Rowstore tables are optimized for low-latency transactional workloads with high concurrency at the expense of memory. In general, we recommend using Universal Storage (see above) and benchmarking your workload before using a rowstore table.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003erowstore();\n\n    // ...\n});\n```\n\n### Reference Tables\n\nTo create a [reference table], you may use the `reference` method. Reference tables are fully replicated to every node in the cluster. This means that if you store 1000 rows in a reference table, those 1000 rows will be copied many times. Because of this you should only store small amounts of data in reference tables, and only when you need to reference that data via joins against non-collocated data in other tables. Inserts and updates to reference tables will also run slower due to the high replication overhead.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003ereference();\n\n    // ...\n});\n```\n\n### Global Temporary Tables\n\nTo create a [global temporary table], you may use the `global` method on the table.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003erowstore();\n    $table-\u003etemporary();\n    $table-\u003eglobal();\n\n    // ...\n});\n```\n\nYou may also use either of the following two methods:\n\n```php\n// Fluent\n$table-\u003erowstore()-\u003etemporary()-\u003eglobal();\n\n// As an argument to `temporary`.\n$table-\u003etemporary($global = true);\n```\n\n### Sparse Columns\n\nYou can mark particular columns as [sparse] fluently by appending `sparse` to the column's definition. This only applies to Rowstore tables.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003erowstore();\n\n    $table-\u003estring('name')-\u003enullable()-\u003esparse();\n});\n```\n\n### Sparse Tables\n\nYou can mark particular entire tables as [sparse] fluently by appending `sparse` to the column's definition. This only applies to Rowstore tables.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003erowstore();\n\n    $table-\u003estring('name');\n\n    $table-\u003esparse();\n});\n```\n\n### Shard Keys\n\nYou can add a [shard key] to your tables using the standalone `shardKey` method, or fluently by appending `shardKey` to the column definition.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name');\n\n    $table-\u003eshardKey('name');\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name')-\u003eshardKey();\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('f_name');\n    $table-\u003estring('l_name');\n\n    $table-\u003eshardKey(['f_name', 'l_name']);\n});\n```\n\n### Sort Keys\n\nYou can add a [sort key] to your tables using the standalone `sortKey` method, or fluently by appending `sortKey` to the column definition.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name');\n\n    $table-\u003esortKey('name');\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name')-\u003esortKey();\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('f_name');\n    $table-\u003estring('l_name');\n\n    $table-\u003esortKey(['f_name', 'l_name']);\n});\n```\n\nSort keys sort in ascending order by default. If you would like to create a sort key which sorts descending you can set the key direction to `desc`.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name');\n\n    $table-\u003esortKey('name', 'desc');\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name')-\u003esortKey('desc');\n});\n```\n\nYou may also define the sort key direction per-column using the following syntax:\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('f_name');\n    $table-\u003estring('l_name');\n\n    $table-\u003esortKey([['f_name', 'asc'], ['l_name', 'desc']]);\n});\n```\n\nSometimes you may want to tune [columnstore][columnstore-tuning] per table. You can do it by appending `with` fluently to the `sortKey` definition.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name');\n\n    $table-\u003esortKey('name')-\u003ewith(['columnstore_segment_rows' =\u003e 100000]);\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name')-\u003esortKey()-\u003ewith(['columnstore_segment_rows' =\u003e 100000]);\n});\n```\n\nHowever, you may want to tune it without setting a column as sort key. You can do that by creating an empty `sortKey` definition:\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name');\n\n    $table-\u003esortKey()-\u003ewith(['columnstore_segment_rows' =\u003e 100000]);\n});\n```\n\n### Unique Keys\n\nYou can add an `unique key` to your tables using the standalone `unique` method, or fluently by appending `unique` to the column definition.\n\n\u003e **Note**\n\u003e SingleStore requires that the shard key is contained within an unique key. This means that in most cases you can't use the fluent api as you will likely need to specify more than one column. This restriction does not apply to reference tables.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('key');\n    $table-\u003estring('val');\n\n    $table-\u003eshardKey('key');\n    $table-\u003eunique(['key', 'val']);\n});\n\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003ereference();\n    $table-\u003estring('name')-\u003eunique();\n});\n```\n\n### Hash Keys\n\nYou can add a `hash key` to your tables using the third argument to the `index`\nfunction. Note that by default, indexes on Universal Storage Tables\n(Columnstore) are always hash indexes, so a simple `.index(foo)` is usually\nsufficient. On Rowstore tables this syntax is needed to create a hash index.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003estring('name');\n    $table-\u003eindex('name', 'name_idx', 'hash');\n});\n```\n\n### Series Timestamps\nTo denote a column as a series timestamp, use the `seriesTimestamp` column modifier.\n\n```php\nSchema::create('table', function (Blueprint $table) {\n    $table-\u003edatetime('created_at')-\u003eseriesTimestamp();\n\n    // Or make it sparse\n    $table-\u003edatetime('deleted_at')-\u003enullable()-\u003eseriesTimestamp()-\u003esparse();\n});\n```\n\n### Computed Columns\n\nSingleStore does not support virtual computed columns. You must use Laravel's [`storedAs`] method to create a [persisted computed column].\n\n```php\nSchema::create('test', function (Blueprint $table) {\n    $table-\u003einteger('a');\n    $table-\u003einteger('b');\n    $table-\u003einteger('c')-\u003estoredAs('a + b');\n});\n```\n\n### Increment Columns without Primary Key\n\nSometimes you may want to set a custom primary key. However if your table has an int `increment` column, Laravel, by default, always sets this column as the primary key. Even if you manually set another one. This behavior can be disabled using the `withoutPrimaryKey` method.\n\n```php\nSchema::create('test', function (Blueprint $table) {\n    $table-\u003eid()-\u003ewithoutPrimaryKey();\n    $table-\u003euuid('uuid');\n    \n    $table-\u003eprimary(['id',  'uuid']);\n});\n```\n\n### Full-text search using FULLTEXT indexes\n\nSingleStoreDB supports full-text search across text columns in a columnstore table using the `FULLTEXT` index type.\n\nKeep in mind that `FULLTEXT` is only supported when using the `utf8_unicode_ci` collation. An exception will be thrown if you try to add the index to a column with an unsupported collation.\n\n```php\nSchema::create('test', function (Blueprint $table) {\n    $table-\u003eid();\n    $table-\u003etext('first_name')-\u003ecollation('utf8_unicode_ci');\n\n    $table-\u003efullText(['first_name']);\n});\n```\n\n## Testing\n\nExecute the tests using PHPUnit\n```\n./vendor/bin/phpunit\n```\n\nTo test against an active SingleStore database, create a `.env` file and populate the following variables:\n\n```\nDB_DATABASE=\nDB_USERNAME=\nDB_PASSWORD=\nDB_HOST=\n```\n\nNow when executing your tests, enable the integration tests by running\n\n```shell\nHYBRID_INTEGRATION=1 ./vendor/bin/phpunit\n```\n\n## Compatibility matrix \n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eDriver version\u003c/th\u003e\n            \u003cth\u003eLaravel version\u003c/th\u003e\n            \u003cth\u003ePHP version\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2\u003e0.0 - 1.4\u003c/td\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003e7.3 - 8.0\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e9\u003c/td\u003e\n            \u003ctd\u003e8.0 - 8.1\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=4\u003e1.5\u003c/td\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003e7.3 - 8.0\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e9\u003c/td\u003e\n            \u003ctd\u003e8.0 - 8.4\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e10\u003c/td\u003e\n            \u003ctd\u003e8.1 - 8.4\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e11\u003c/td\u003e\n            \u003ctd\u003e8.2 - 8.4\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=1\u003e2.0\u003c/td\u003e\n            \u003ctd\u003e12\u003c/td\u003e\n            \u003ctd\u003e8.2 - 8.4\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## License\n\nThis library is licensed under the Apache 2.0 License.\n\n## Resources\n\n* [SingleStore](https://singlestore.com)\n* [Laravel](https://laravel.com)\n* [Full-text search documentation](https://docs.singlestore.com/managed-service/en/reference/sql-reference/data-definition-language-ddl/create-table.html#fulltext-behavior)\n\n## User agreement\n\nSINGLESTORE, INC. (\"SINGLESTORE\") AGREES TO GRANT YOU AND YOUR COMPANY ACCESS TO THIS OPEN SOURCE SOFTWARE CONNECTOR ONLY IF (A) YOU AND YOUR COMPANY REPRESENT AND WARRANT THAT YOU, ON BEHALF OF YOUR COMPANY, HAVE THE AUTHORITY TO LEGALLY BIND YOUR COMPANY AND (B) YOU, ON BEHALF OF YOUR COMPANY ACCEPT AND AGREE TO BE BOUND BY ALL OF THE OPEN SOURCE TERMS AND CONDITIONS APPLICABLE TO THIS OPEN SOURCE CONNECTOR AS SET FORTH BELOW (THIS “AGREEMENT”), WHICH SHALL BE DEFINITIVELY EVIDENCED BY ANY ONE OF THE FOLLOWING MEANS: YOU, ON BEHALF OF YOUR COMPANY, CLICKING THE “DOWNLOAD, “ACCEPTANCE” OR “CONTINUE” BUTTON, AS APPLICABLE OR COMPANY’S INSTALLATION, ACCESS OR USE OF THE OPEN SOURCE CONNECTOR AND SHALL BE EFFECTIVE ON THE EARLIER OF THE DATE ON WHICH THE DOWNLOAD, ACCESS, COPY OR INSTALL OF THE CONNECTOR OR USE ANY SERVICES (INCLUDING ANY UPDATES OR UPGRADES) PROVIDED BY SINGLESTORE.\nBETA SOFTWARE CONNECTOR\n\nCustomer Understands and agrees that it is  being granted access to pre-release or “beta” versions of SingleStore’s open source software connector (“Beta Software Connector”) for the limited purposes of non-production testing and evaluation of such Beta Software Connector. Customer acknowledges that SingleStore shall have no obligation to release a generally available version of such Beta Software Connector or to provide support or warranty for such versions of the Beta Software Connector  for any production or non-evaluation use.\n\nNOTWITHSTANDING ANYTHING TO THE CONTRARY IN ANY DOCUMENTATION,  AGREEMENT OR IN ANY ORDER DOCUMENT, SINGLESTORE WILL HAVE NO WARRANTY, INDEMNITY, SUPPORT, OR SERVICE LEVEL, OBLIGATIONS WITH\nRESPECT TO THIS BETA SOFTWARE CONNECTOR (INCLUDING TOOLS AND UTILITIES).\n\nAPPLICABLE OPEN SOURCE LICENSE: Apache 2.0\n\nIF YOU OR YOUR COMPANY DO NOT AGREE TO THESE TERMS AND CONDITIONS, DO NOT CHECK THE ACCEPTANCE BOX, AND DO NOT DOWNLOAD, ACCESS, COPY, INSTALL OR USE THE SOFTWARE OR THE SERVICES.\n\n[reference table]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/concepts-of-physical-database-schema-design/other-schema-concepts.html#reference-tables-654455\n[global temporary table]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/concepts-of-physical-database-schema-design/other-schema-concepts.html#global-temporary-tables\n[columnstore]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/concepts-of-physical-database-schema-design/columnstore.html\n[rowstore]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/concepts-of-physical-database-schema-design/rowstore.html\n[sparse]: https://docs.singlestore.com/managed-service/en/reference/sql-reference/data-definition-language-ddl/create-table.html#compression---sparse-and-sparse-behavior\n[shard key]: https://docs.singlestore.com/managed-service/en/developer-resources/porting-tables-to-singlestoredb-cloud/shard-keys.html\n[sort key]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/procedures-for-physical-database-schema-design/creating-a-columnstore-table.html\n[columnstore-tuning]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/procedures-for-physical-database-schema-design/configuring-the-columnstore-to-work-effectively.html\n[`storedAs`]: https://laravel.com/docs/9.x/migrations#column-modifiers\n[persisted computed column]: https://docs.singlestore.com/managed-service/en/create-a-database/physical-database-schema-design/procedures-for-physical-database-schema-design/using-persistent-computed-columns.html\n[singlestore-pem]: https://portal.singlestore.com/static/ca/singlestore_bundle.pem\n[Eloquent's attribute casting]: https://laravel.com/docs/9.x/eloquent-mutators#attribute-casting\n[create table]: https://docs.singlestore.com/managed-service/en/reference/sql-reference/data-definition-language-ddl/create-table.html\n[attr_persistent]: https://www.php.net/manual/en/features.persistent-connections.php\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinglestore-labs%2Fsinglestoredb-laravel-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinglestore-labs%2Fsinglestoredb-laravel-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinglestore-labs%2Fsinglestoredb-laravel-driver/lists"}