Mysql
 sql >> Database >  >> RDS >> Mysql

Violazione del vincolo di integrità:1452 laravel

La tua query sql finale è insert into occasions (updated_at, created_at) values (2014-06-30 18:42:11, 2014-06-30 18:42:11) . Dovresti vedere solo updated_at e created_at viene inserito.

Ciò accade perché Laravel protegge il tuo codice da Assegnazione di massa per impostazione predefinita:

Dovrai rendere le tue colonne riempibili aggiungendo un array di $fillable colonne nel tuo modello:

class Occasion extends Eloquent
{
    protected $fillable = array(
        'created_by_user_id',
        'updated_by_user_id',
        // The rest of the column names that you want it to be mass-assignable.
    );
}

Oppure fai il contrario, proteggi tutte le colonne che non vuoi che siano assegnabili in massa:

class Occasion extends Eloquent
{
    protected $guarded = array(
        // Any columns you don't want to be mass-assignable.
        // Or just empty array if all is mass-assignable.
    );
}

Nota che stai assegnando Input::get() direttamente nel modello. Ecco un avvertimento da Assegnazione di massa sezione: