Вставка данных в Mysql о зрителях Laravel

#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;
}