#mysql #laravel
#mysql #laravel
Вопрос:
Есть вопрос.
Мне нужна таблица с данными о моих посетителях. У меня есть эта схема :
public function up()
{
Schema::create('viewers', function (Blueprint $table) {
$table->increments('id')->primary('id');
$table->string('ip_address', 45)->nullable();
$table->string('country')->nullable();
$table->string('city')->nullable();
$table->text('device')->nullable();
$table->timestamp('last_activity')->useCurrent();
$table->rememberToken();
});
}
Это мой контроллер на моей странице.
public function index(Request $request)
{
$viewer = New Viewers();
$data = StevebaumanLocationFacadesLocation::get('83.143.245.162');
$viewer->ip_address = $request->ip();
$viewer->country = $data->countryName;
$viewer->city = $data->cityName;
$viewer->device = $request->userAgent();
$viewer->save();
}
Это моя ошибка
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into `viewers` (`ip_address`, `country`, `city`, `device`, `updated_at`, `created_at`) values (::1, Germany, Frankfurt am Main, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15, 2020-11-26 10:11:06, 2020-11-26 10:11:06))
Зачем updated_at, created_at
пытаться вставить в таблицу??
Комментарии:
1. Вероятно, он ожидает, что эти столбцы будут там по умолчанию, и если это не так, он должен знать. Как вы создали таблицу? Вы что-то удалили при миграции по умолчанию?
Ответ №1:
Это функция Laravel по умолчанию, Laravel попытается автоматически заполнить created_at / updated_at и не найдет их.
Если вы не хотите, чтобы эти два столбца были в вашей Viewers
модели, добавьте следующую строку.
public $timestamps = FALSE;
Ответ №2:
По умолчанию все модели в laravel имеют updated_at и created_at. Если в вашей таблице их нет, вы должны отключить их, добавив public $timestamps = false;
в модель.
class Viewers extends Model
{
public $timestamps = false;
Ответ №3:
Вы пропускаете $table->timestamps()
миграцию
public function up()
{
Schema::create('viewers', function (Blueprint $table) {
$table->increments('id')->primary('id');
$table->string('ip_address', 45)->nullable();
$table->string('country')->nullable();
$table->string('city')->nullable();
$table->text('device')->nullable();
$table->timestamp('last_activity')->useCurrent();
$table->rememberToken();
$table->timestamps(); //for created_at and updated_at columns
});
}
И если вы не хотите updated_at
, и created_at
столбцы
class Viewer extends Model
{
//In Model class set timestamps to false
public $timestamps = false;
}