Download the PHP package piotr-cz/cockpit-sql-driver without Composer
On this page you can find all versions of the php package piotr-cz/cockpit-sql-driver. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download piotr-cz/cockpit-sql-driver
More information about piotr-cz/cockpit-sql-driver
Files in piotr-cz/cockpit-sql-driver
Package cockpit-sql-driver
Short Description SQL Driver for Cockpit CMS
License MIT
Homepage https://github.com/piotr-cz/cockpit-sql-driver
Informations about the package cockpit-sql-driver
SQL Driver for Cockpit CMS
This addon allows to use MySQL/ MariaDB/ PostgreSQL databases instead of default MongoDB/ SQLite.
Requirements
- Cockpit CMS (next, tested up to v0.11.0 or legacy)
- MySQL 5.7.9/ MariaDB 10.2.6/ PostgreSQL 9.4
- PHP 7.1
- Enabled PHP extensions: pdo, pdo_mysql/ pdo_pgsql
Compatibility
To run Cockpit 0.9.2+
at least version 1.0.0-beta.2+
is required.
Installation
Note:
If you installed addon before ever starting Cockpit, some errors may come up once you start it.
To solve it, start Cockpit with database configuration it supports out of the box to trigger Cockpit warmup and then set configuration specific for this addon.
Manual
Download latest release and extract to COCKPIT_PATH/addons/SqlDriver
directory
Using Cockpit CLI (development version)
Using Composer
-
Make sure path to cockpit addons are defined in your projects' composer.json file
- In your project root run command
Configuration
Example configuration for COCKPIT_PATH/config/config.php
file:
Rererence: Cockpit docs > Configuration
Database content migration (Cockpit v0.6.0+)
-
Export data to
COCKPIT_PATH/migration
subdirectory -
Switch database to sqldriver (see Configuration)
- Import data from
COCKPIT_PATH/migration
subdirectory
Reference: Cockpit docs > CLI
Testing
There are integration tests included in the package. These require Cockpit CMS as a dev dependency and use it's MongoHybrid\Client API to run actions on database.
To run tests
-
Install dependencies
-
Configure test database
copy configuration
- Run tests with PHPUnit
Drawbacks
Cockpit doesn't provide public API to register custom database drivers so this addon monkey-patches Cockpit Driver selector client (MongoHybrid Client). This means that there is no guarantee that this addon will work in future versions of Cockpit.
Collection filters
Not implemented
-
$func
/$fn
/$f
$fuzzy
Work differently
-
callable
Unlike SQLite, PDO MySQL and PostgreSQL drivers don't have support for User Defined Functions in PHP language - so callable is evaluated on every result fetch. If you have lots of documents in collection and care about performance use other filters.
-
$in
,$nin
When database value is an array, evaluates to false.
-
$regexp
- MySQL implemented via REGEXP + case insensitive
- PostgreSQL impemeted via POSIX Regular Expressions + case insensitive
Wrapping expression in
//
or adding flags like/foobar/i
won't work, as MySQL and PosgreSQL Regexp functions don't support flags. -
$text
Filter options are not supported ($minScore, $distance, $search).
Manual database optimizations
By default package creates virtual column _id
with unique index on every created collection.
If you would like to speed up filters on other collection fields - add virtual column with suitable index and type.
For example to add virtual column of integer type for field FIELD_NAME in TABLE_NAME collection, use
-
MySQL:
Reference: MySQL 5.7 > CREATE INDEX
-
PosgreSQL:
Reference: PostgreSQL 9.4 > CREATE INDEX
Known issues
Error: Call to a member function toArray() on null
This happens when starting cockpit for the first time and this addon is installed. The reason is in that native Cockpit modules try to accesss storage which is initialized later (during custom modules bootstrap).
Cockpit must be started for the first time without being configured to use SQL driver.
Solution 1
Start Cockpit with database configuration it supports out of the box and than switch to sqldriver
as described here
Solution 2
Manually create file COCKPIT_STORAGE_FOLDER/tmp/webhooks.cache.php
with content
Copyright and license
Copyright since 2019 Piotr Konieczny under the MIT license.