[英]Laravel Unknown Column 'updated_at'
我剛開始使用 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;
}
我一定是忘記了什么......我在這里做錯了什么?
在模型中,編寫以下代碼;
public $timestamps = false;
這會奏效。
說明:默認情況下,laravel 會在您的表中期望 created_at 和 updated_at 列。 通過將其設置為 false,它將覆蓋默認設置。
將時間戳設置為 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;
亞歷克斯和薩米爾的回答很好,但也許只是關於為什么需要放置的附加信息
public $timestamps = false;
時間戳在官方Laravel 頁面上有很好的解釋:
默認情況下,Eloquent 期望 created_at 和 updated_at 列存在於你的 >tables 中。 如果您不希望 >Eloquent 自動管理這些列,請將模型上的 $timestamps 屬性設置為 false。
對於那些使用 laravel 5 或更高版本的人,必須使用 public 修飾符,否則會拋出異常
Access level to App\yourModelName::$timestamps must be
public (as in class Illuminate\Database\Eloquent\Model)
public $timestamps = false;
如果您仍然需要時間戳,但只是忘記將它們添加到遷移中,則將以下內容添加到遷移文件中也將起作用:
class AddUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->timestamps(); // <-- Add this to add created_at and updated_at
});
}
}
之后不要忘記重新運行遷移。
php artisan migrate:rollback
php artisan migrate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.