Lok*_*oko 137 php mysql laravel laravel-migrations
我刚刚开始使用Laravel,我收到以下错误:
未知列'updated_at'插入gebruikers(naam,wachtwoord,updated_at,created_at)
我知道错误来自迁移表时的时间戳列,但我没有使用该updated_at字段.我曾经使用它,当我按照Laravel教程,但现在我正在制作(或试图制作)我自己的东西.即使我不使用时间戳,我也会收到此错误.我似乎无法找到它被使用的地方.这是代码:
调节器
public function created()
{
    if (!User::isValidRegister(Input::all())) {
        return Redirect::back()->withInput()->withErrors(User::$errors);
    }
    // Register the new user or whatever.
    $user = new User;
    $user->naam = Input::get('naam');
    $user->wachtwoord = Hash::make(Input::get('password'));
    $user->save();
    return Redirect::to('/users');
}
路线
Route::get('created', 'UserController@created');
模型
public static $rules_register = [
    'naam' => 'unique:gebruikers,naam'
];
public static $errors;
protected $table = 'gebruikers';
public static function isValidRegister($data)
{
    $validation = Validator::make($data, static::$rules_register);
    if ($validation->passes()) {
        return true;
    }
    static::$errors = $validation->messages();
    return false;
}
我一定是忘记了什么......我在这里做错了什么?
Sam*_*ikh 368
在模型中,写下面的代码;
public $timestamps = false;
这会奏效.
Cle*_*ode 12
对于那些使用laravel 5或更高版本的人来说,必须使用public修饰符,否则会抛出异常
Access level to App\yourModelName::$timestamps must be
public (as in class Illuminate\Database\Eloquent\Model)
public $timestamps = false;
小智 12
亚历克斯和萨梅尔的答案很好,但也许只是为什么有必要提供额外的信息
public $timestamps = false;
默认情况下,Eloquent希望您的>表中存在created_at和updated_at列.如果您不希望通过> Eloquent自动管理这些列,请将模型上的$ timestamps属性设置为false.
usr*_*und 11
将时间戳记设置为false意味着您将同时丢失created_at和Updated_at,而您可以在模型中同时设置两个键。
情况1:
您有created_at列,但没有update_at,只需updated_at在模型中将其设置为false
class ABC extends Model {
const UPDATED_AT = null;
情况2:
您同时拥有created_at和updated_at列,但具有不同的列名
您可以简单地执行以下操作:
class ABC extends Model {
const CREATED_AT = 'name_of_created_at_column';
const UPDATED_AT = 'name_of_updated_at_column';
最后完全忽略时间戳:
class ABC extends Model {
public $timestamps = false;
| 归档时间: | 
 | 
| 查看次数: | 83882 次 | 
| 最近记录: |