Skip to content

Repository files navigation

laravel-mysqlite

CI codecov StyleCI Scrutinizer Code Quality Latest Stable Version Total Downloads License Dependabot

Laravel MySQLite is meant to be used in conjunction with Laravel. It is a database connection that adds select functions from MySQL to SQLite.

Requirements

  • PHP: >= 8.2
  • Laravel: 12.x or 13.x (illuminate/database ^12.0 || ^13.0)

For users upgrading from v1.x, see UPGRADING.md for migration instructions.

Usage

Adding the Composer Resource

  1. Execute composer require spam-n-eggs/laravel-mysqlite or alternatively composer require --dev spam-n-eggs/laravel-mysqlite

Registering as a Service Provider

In order to reduce clutter it is preferable to create a separate Service Provider

  1. If there is a need to conditionally register the Service (i.e. you only use it in testing) create a new class in app/Providers that extends Mhorninger\SQLite\MySQLiteServiceProvider

    <?php
    namespace App\Providers;
    
    use Mhorninger\SQLite\MySQLiteServiceProvider as ServiceProvider;
    
    class MySQLiteServiceProvider extends ServiceProvider
    {
        public function register()
        {
            if ($shouldRegister) {
                parent::register();
            }
        }
    }
  2. Add a line to app/Providers/AppServiceProvider.php within the register() method:

    $this->app->register(MySQLiteServiceProvider::class);

Ported Functionality

Constants

Operators

Methods

Aggregate

Date and Time

Flow

Numeric

String

Miscellaneous

Vectorface-Specific

Comparison

Custom Functionality

While this package aims to cover common functionality, there are times when you need support for a function quickly or a custom function that is unique to your application. This is easy to do with two methods from the boot() method of your service provider class:

<?php

class MySQLiteServiceProvider extends ServiceProvider
{
    ...

    public function boot()
    {
        $connection = $this->app->get('db')->connection();
        
        if ($connection->getDriverName() === 'sqlite') {
            $connection
                ->addRewriteRule('/CURDATE\(\)/', "date('now')")
                ->addFunction('CURDATE', fn() => CarbonImmutable::today()->toDateString(), 0);
        }
    }
}
  • addRewriteRule() will replace a string in your query using regex, should Sqlite have a native function that could be used as a 1:1 replacement.
  • addFunction() uses PDO sqliteCreateFunction() to register a custom function with PHP in the event that Sqlite doesn't have a drop-in replacement or if logic is more complicated. Read More.

Contributing

Want to file a bug, contribute some code, improve documentation, or request a feature? Awesome Sauce! Read up on our guidelines for contributing. All contributions must follow our Code of Conduct.

Questions

Have a question? Log an issue with the Question tag. We'll get back to you in a timely fashion.

Support This Project

laravel-mysqlite is maintained by Dominion Solutions as open-source work. If this package saves you time, consider hiring us for your next project.

We offer full-stack software engineering services — from feature development and architecture to debugging and performance optimization. Whether you need a long-term development partner or a focused engagement, we'd love to help.

StackLift is our Laravel upgrade and stabilization engagement. We upgrade your framework, audit dependencies, resolve breaking changes, and hand you a maintainable codebase — starting at $1.5k.

Request an estimate →

Credits

This library uses other Open Source components. You can find the source code of their open source projects along with license information below. We acknowledge and are grateful to these developers for their contributions to open source community.

Project: Database https://github.com/illuminate/database Copyright (c) Taylor Otwell License (MIT) https://github.com/laravel/framework/blob/5.7/LICENSE.md

Project: MySQLite https://github.com/Vectorface/MySQLite Copyright (c) 2014 Vectorface, Inc. License: (MIT) https://github.com/Vectorface/MySQLite/blob/master/LICENSE

Releases

Sponsor this project

Packages

Used by

Contributors

Languages