1. Go to this page and download the library: Download coyote6/laravel-base 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/ */
namespace App\Models;
use Coyote6\LaravelBase\Traits\Models\BootTraits;
use Coyote6\LaravelBase\Traits\Models\Boot\Author;
use Coyote6\LaravelBase\Traits\Models\Boot\Client;
use Coyote6\LaravelBase\Traits\Models\Boot\MachineName;
use Coyote6\LaravelBase\Traits\Models\Boot\Slug;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Example extends Model {
use HasFactory;
use Author;
use Client;
use MachineName;
use Slug;
use BootTraits;
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'name',
'author_id',
'client_id',
'machine_name',
'slug',
];
}
use Coyote6\LaravelBase\Traits\Models\BootTraits;
use Coyote6\LaravelBase\Traits\Models\Boot\Author;
use Coyote6\LaravelBase\Traits\Models\Boot\OriginalAuthor;
class Example extends Model {
use Author;
use OriginalAuthor;
use BootTraits;
// ...
protected $fillable = [
'id',
'author_id',
'original_author_id',
];
}
use Coyote6\LaravelBase\Traits\Models\Boot\MachineNameAsId;
class Example extends Model {
use MachineNameAsId;
use BootTraits;
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'name',
];
}
namespace App\Models;
use Coyote6\LaravelBase\Traits\Models\GetAsOptions;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Example extends Model {
use HasFactory;
use GetAsOptions;
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'name',
];
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Example;
class ExampleController extends Controller {
public function index () {
dd (Example::getAsOptions());
}
}
namespace App\Models;
use Coyote6\LaravelBase\Traits\Models\GetAsOptions;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Example extends Model {
use HasFactory,
GetAsOptions;
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'abbr',
'name',
'title',
];
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Example;
class ExampleController extends Controller {
public function index () {
dd (Example::getAsOptions('abbr')); // ['CA' => 'California', ...]
dd (Example::getAsOptions('id', 'abbr')); // [5 => 'CA', 12 => 'NY', ...]
dd (Example::getAsOptions('id', 'name', 25, 2)); // page 2, 25 per page
dd (Example::getAsOptions(field: 'title')); // [5 => 'A Book Title', ...] -- keyed by id, labelled by title
// Filter and/or re-order via $modifyQuery -- e.g. a dependent dropdown,
// or statuses in workflow order off a position column.
dd (Example::getAsOptions(
modifyQuery: fn ($query) => $query->where ('country_abbr', 'US')->orderBy ('name'),
));
dd (Example::getAsOptions(
modifyQuery: fn ($query) => $query->orderBy ('position'),
));
}
}
namespace App\Models;
use Coyote6\LaravelBase\Traits\Models\GetBySlug;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Example extends Model {
use HasFactory,
GetBySlug;
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = [
'id',
'slug',
'name',
];
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Example;
use Illuminate\Http\Request;
class ExampleController extends Controller {
public function index (Request $request) {
$slug = $request->get('slug');
dd (Example::getBySlug ($slug));
}
}
use Coyote6\LaravelBase\Traits\Database\DropsIndexes;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
use DropsIndexes;
public function up (): void {
Schema::table('examples', function (Blueprint $table) {
$this->dropForeignIfExists ($table, 'user_id');
$table->dropColumn('user_id');
});
}
};
namespace App\Providers;
use Coyote6\LaravelBase\Traits\Database\ServiceProviderSeedsDb;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider {
use ServiceProviderSeedsDb;
public function boot (): void {
$this->seedDbOnCommand (database_path('seeders/package'));
}
}
namespace App\Console\Commands;
use Coyote6\LaravelBase\Traits\Files\ReadsCsv;
use Illuminate\Console\Command;
class ImportExamplesCommand extends Command {
use ReadsCsv;
protected $signature = 'examples:import {path}';
public function handle (): void {
$rows = $this->getItemsFromCSV ($this->argument('path'));
foreach ($rows as $row) {
// $row is an associative array keyed by the CSV's header row
}
}
}