PHP code example of plin-code / laravel-sql-dialect

1. Go to this page and download the library: Download plin-code/laravel-sql-dialect library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

plin-code / laravel-sql-dialect example snippets


use Illuminate\Database\Eloquent\Builder;
use PlinCode\SqlDialect\LikeOperator;

Movie::query()
    ->where(function (Builder $query) use ($term) {
        LikeOperator::applyContains($query, 'movies.title', $term);
    })
    ->get();

use Illuminate\Database\Eloquent\Builder;
use PlinCode\SqlDialect\LikeOperator;

Job::query()
    ->where(function (Builder $query) use ($keywords) {
        foreach ($keywords as $keyword) {
            LikeOperator::orApplyContains($query, 'title', $keyword);
        }
    })
    ->where(function (Builder $query) use ($excluded) {
        foreach ($excluded as $keyword) {
            LikeOperator::applyNotContains($query, 'title', $keyword);
        }
    })
    ->get();

$query->where(function (Builder $query) {
    $query->whereNull('location');
    LikeOperator::orApplyNotContains($query, 'location', 'onsite');
});

AllowedFilter::partial('title');

use PlinCode\SqlDialect\YearExpression;
use Illuminate\Support\Facades\DB;

$query = Movie::query();

$query->orderByRaw(YearExpression::numeric($query, 'release_date').' desc');

$query->select([
    'movies.*',
    DB::raw(YearExpression::text($query, 'release_date').' as release_year'),
]);

use Illuminate\Database\Eloquent\Builder;
use PlinCode\SqlDialect\CsvValues;
use Spatie\QueryBuilder\Filters\Filter;

final class GenresFilter implements Filter
{
    public function __invoke(Builder $query, mixed $value, string $property): void
    {
        $genres = CsvValues::parse($value);

        if ($genres === []) {
            return;
        }

        $query->whereIn($property, $genres);
    }
}