Download the PHP package calebporzio/sushi without Composer

On this page you can find all versions of the php package calebporzio/sushi. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package sushi

Sushi 🍣

Eloquent's missing "array" driver.

Sometimes you want to use Eloquent, but without dealing with a database.

This Package Is Sponsorware 💰💰💰

Originally, this package was only available to my sponsors on GitHub Sponsors until I reached 75 sponsors.

Now that we've reached the goal, the package is fully open source.

Enjoy, and thanks for the support! ❤️

Learn more about Sponsorware at github.com/sponsorware/docs 💰.

Requirements

The pdo-sqlite PHP extension must be installed on your system to use this package.

Install

Use

Using this package consists of two steps:

  1. Add the Sushi trait to a model.
  2. Add a $rows property to the model.

That's it.

Now, you can use this model anywhere you like, and it will behave as if you created a table with the rows you provided.

This is really useful for "Fixture" data, like states, countries, zip codes, user_roles, sites_settings, etc...

Relationships

Let's say you created a Role model, based on an array using Sushi, that looked like this:

You can add a relationship to another standard model, just like you normally would:

Assuming the users table has a role_id column, you can do things like this:

Note: There is one caveat when dealing with Sushi model relationships. The whereHas method will NOT work. This is because the two models are spread across two separate databases.

Using database-checking validation rules

You can even use Laravel's exists:table,column database checking request validation rule.

Note: Be aware that you must use the fully-qualified namespace of the model instead of a table name. This ensures that Laravel will correctly resolve the model's connection.

Custom Schema

If Sushi's schema auto-detection system doesn't meet your specific requirements for the supplied row data, you can customize them with the $schema property or the getSchema() method.

Advanced Usage

When you need more flexibility, you can implement the afterMigrate(BluePrint $table) method, allowing you to customize the table after it has been created. This might be useful for adding indexes to certain columns.

How It Works

Under the hood, this package creates and caches a SQLite database JUST for this model. It creates a table and populates the rows. If, for whatever reason, it can't cache a .sqlite file, it will default to using an in-memory sqlite database.

Using ->getRows()

You can optionally opt out of using the protected $rows property, and directly implement your own getRows() method.

This will allow you to determine the rows for the model at runtime. You can even generate the model's rows from an external source like a third-party API.

Caching ->getRows()

If you choose to use your own ->getRows() method, the rows will NOT be cached between requests by default.

You can force Sushi to cache your dataset with the following method: sushiShouldCache().

Let's look at a configuration where ->getRows() datasets would be cached as an example:

By default, Sushi looks at the "last modified" timestamp of your model PHP file and compares it with its internal .sqlite cache file. If the model file has been changed more recently than the .sqlite cache file, then Sushi will destroy and rebuild the .sqlite cache. Additionally, you can configure an external file for Sushi to reference when determining if the cache is up to date or needs to be refreshed.

If, for example, you are using Sushi to provide an Eloquent model for an external data source file like an .csv file, you can use sushiCacheReferencePath to force Sushi to reference the .csv file when determining if the cache is stale.

For example:

Now, Sushi will only "bust" its internal cache if roles.csv changes, rather than looking at the Role.php model.

Handling Empty Datasets

Sushi reads the first row in your dataset to work out the scheme of the SQLite table. If you are using getRows() and this returns an empty array (e.g an API returns nothing back) then Sushi would throw an error.

If you would like Sushi to work even if the dataset is empty, you can define your schema in the optional protected $schema array.

Note: If you choose to use your own ->getRows() method, the rows will NOT be cached between requests.

Handling String-based Primary Keys

Sushi requires you to add two properties to your model, if it uses a string-based primary key - $incrementing and $keyType:

Troubleshoot

ERROR: SQLSTATE[HY000]: General error: 1 too many SQL variables

By default Sushi uses chunks of 100 to insert your data in the SQLite database. In some scenarios this might hit some SQLite limits. You can configure the chunk size in the model: public $sushiInsertChunkSize = 50;


All versions of sushi with dependencies

PHP Build Version
Package Version
Requires php Version ^7.1.3|^8.0
ext-pdo_sqlite Version *
ext-sqlite3 Version *
illuminate/database Version ^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
illuminate/support Version ^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package calebporzio/sushi contains the following files

Loading the files please wait ....