Как реализовать мои модели отношений и обеспечить только один к одному — Laravel

Я очень новичок в Laravel и фреймворках, поэтому я очень многому учусь.

После входа в систему пользователь переходит на страницу, где отображается форма. Я хочу, чтобы эта форма отображалась только в том случае, если они не заполнили ее ранее.

Мои таблицы такие

User                         Registration Q's
---------------------------------------------------
user_id                        reg_id
name                           q1
email                          q2
password                       q3
user_id

Моя модель user.php:

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];

/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function userq()
{
return $this->hasOne('Userreq');
}

Модель userregq.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class userregq extends Model
{
protected $table = 'userregq';
public $timestamps = false;

public function user()
{
return $this->belongsTo('User');
}
}

Если кто-то может помочь мне убедиться, что только один пользователь имеет одну регистрационную анкету, и она показывается только в том случае, если они этого не делают?

Спасибо

0

Решение

Я думаю, что сначала вам нужно изменить дизайн базы данных, так как отношения «многие ко многим» подходят лучше. Пользователь может ответить на несколько вопросов, и один вопрос может быть задан многим пользователям, и вам также нужно сохранить ответ, поэтому я бы изменил дизайн на это:

User         Answer         Question
---------------------------------------
user_id      answer_id      question_id
name         user_id        question
email        question_id
password     answer

А потом напиши свои красноречивые модели.

Когда пользователь входит в систему, вы извлекаете записи из таблицы ответов с зарегистрированным идентификатором пользователя и, если таковых нет, отображаете ему анкету.

Поскольку вы новичок в Laravel, вы можете проверить эти замечательные видеоуроки Джеффри Уэй в Laracasts Laravel 5 Основы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]