J'utilise la personnalisation suivante dans Laravel pour :
- Par défaut, created_at correspond à l'horodatage actuel.
- Mettre à jour l'horodatage lorsque l'enregistrement est mis à jour
D'abord, je vais créer un fichier, helpers.php
dans la racine de Laravel et insérez ce qui suit :
<?php
if (!function_exists('database_driver')) {
function database_driver(): string
{
$connection = config('database.default');
return config('database.connections.' . $connection . '.driver');
}
}
if (!function_exists('is_database_driver')) {
function is_database_driver(string $driver): bool
{
return $driver === database_driver();
}
}
Dans composer.json, je vais insérer ce qui suit dans autoload
. Cela permet au compositeur de découvrir automatiquement les aides.php.
"autoload": {
"files": [
"app/Services/Uploads/Processors/processor_functions.php",
"app/helpers.php"
]
},
J'utilise les éléments suivants dans mes modèles Laravel.
if (is_database_driver('sqlite')) {
$table->timestamps();
} else {
$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')
->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
}
Cela permet à mon équipe de continuer à utiliser sqlite pour les tests unitaires. ON UPDATE CURRENT_TIMESTAMP
est un raccourci MySQL et n'est pas disponible dans sqlite.