Привет!
Три таблицы.
users
, verification_types
, - хранит id, name и slug. Например, id
= 1, name
= 'Подтверждённый', slug
= 'verificated'. users_verifications
- id
, user_id
(связь с users`.`id
), verification_id
(связь с verification_types`.`id
.
Хочу, чтобы при регистрации пользователя, можно было одной строчкой добавить запись в таблицу users_verifications
запись по типу: id
= USER_ID, verification_id
= 1
Можно ли как-то параллельно записать данные путём отношений таблиц?
Имеются миграции, помимо стандартной таблицы users
:
Таблица verification_types
(Уровни верификации по типу: 1 = Гость, 2 = Подтвержден E-Mail и т.д.)
Schema::create('verification_types', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->comment('Название уровня верификации');
$table->string('slug')->comment('Системное название');
$table->timestamps();
});
Таблица users_verifications
(Верификации по типу: user_id:1, verification_id:3 = Подтверждён номер и E-Mail и т.д.)
Schema::create('users_verifications', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->comment('ID пользователя');
$table->integer('verification_id')->unsigned()->comment('ID типа верификации');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('verification_id')->references('id')->on('verification_types')->onDelete('cascade');
});
Модель VerificationTypes
class VerificationTypes extends Authenticatable
{
...
public function userVerification() {
$this->belongsToMany('App/User');
}
}
Модель User
class User extends Authenticatable
{
use Notifiable;
use HasRoleAndPermission;
...
/**
* User -> Тип верификации
*/
public function verificationStatus() {
$this->belongsToMany('App\Entities\User\VerificationTypes', 'users_verifications', 'user_id', 'verification_id');
}
}
Контроллер RegisterController
class RegisterController extends Controller
{
...
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$role = Role::where('slug', '=', 'guest')->first(); // Прикрепляем роль к пользователю
$user->attachRole($role);
/*
* Прикрепляем уровень верификации
*/
$user->verificationStatus()->attach([$user->id, 1]);
return $user;
}
}
Заранее спасибо!
Исправлено!
Ошибка была в том, что забыл в моделях return
.
Потом, в таблицу добавлялись две записи. id=USER_ID, verification_id=1
и id=USER_ID, verification_id=USER_ID
Тогда просто вместо
$user->verificationStatus()->attach([$user->id, 1]);
Сделал:
$user->verificationStatus()->attach([1]);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как работают доставки пиццы или любой другой ресурс подразумевающий систему заказов? Как реализован сам механизм заказа? Это PHP + MySQL? Или...
То есть сейчас выводится стандартная таблица yii, хочу поменять шаблон вывода на подобии itemView