Pour ma part, je ne pense pas qu'utiliser un CRON soit la solution idéal ici. Je n'ai peut être pas bien compris le problème mais j'aurai plutôt utilisé un observer Laravel pour gérer cela.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Observers\DateFinObserver;
class Statement extends Model
{
public static function boot()
{
parent::boot();
static::observe(new DateFinObserver);
}
}
L'observer te permet ensuite de déclencher certaines actions (saving, saved...etc...) qui en quelque sorte marche comme des callbacks (before_save, after_update...etc...si tu connais un peu Rails). Tu trouveras plus de documentation dessus ici http://laravel.com/docs/4.2/eloquent#model-events (s'applique aussi a la version 5.1).
<?php
namespace App\Models\Observers;
class DateFinObserver
{
public function saving($model)
{
if (isset($model->date_fin)) {
$model->state = 'failed';
}
}
}
Ici par exemple, au moment de sauvegarder, si une date de fin a été définit, on met la valeur de state a ‘failed’. Le CRON a mon humble avis est overkill. En terme de performance, cette solution est bien plus efficace.
Pour aller plus loin, si tu veux pouvoir differer ce traitement un peu plus tard, le mieux serai d'utiliser les workers. Plus d'info ici http://laravel.com/docs/5.1/queues#writing-job-classes