Где правильно создавать связанный элемент с пользователем при создании этого пользователя?

Возможно, плохо сформулировал вопрос, поясню суть: у меня есть таблица пользователей users и таблица с мета-данными пользователей (город, пол. возраст и тд) users_meta, которая связана с таблицей users по полю user_id.

Класс миграции users_meta
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersMetaTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users_meta', function (Blueprint $table) {
          $table->unsignedBigInteger('user_id');
          $table->string('occupation')->nullable();
          $table->string('description')->nullable();
          $table->bigInteger('reputation')->default(0);
          $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
          $table->primary(['user_id']);
          $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users_meta');
    }
}


То есть при регистрации пользователя должен создаваться элемент, связанный с пользователем, в котором будет информация о нем. Где это правильнее делать? У меня есть еще несколько таблиц, которые по такому же принципу связаны с таблицей users. На данный я делаю создание данные в обсервере UserObserver:

Класс UserObserver

<?php

namespace App\Observers;

use App\Models\User;
use App\Models\Usermeta;

class UserObserver
{
    /**
     * Handle the user "created" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function created(User $user)
    {
      Usermeta::create([

      ]);
    }

    /**
     * Handle the user "updated" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function updated(User $user)
    {
        //
    }

    /**
     * Handle the user "deleted" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function deleted(User $user)
    {
        //
    }

    /**
     * Handle the user "restored" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function restored(User $user)
    {
        //
    }

    /**
     * Handle the user "force deleted" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function forceDeleted(User $user)
    {
        //
    }
}

  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 1
@jazzus
Лучше обсервера ничего нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы