Я очень новичок в 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');
}
}
Если кто-то может помочь мне убедиться, что только один пользователь имеет одну регистрационную анкету, и она показывается только в том случае, если они этого не делают?
Спасибо
Я думаю, что сначала вам нужно изменить дизайн базы данных, так как отношения «многие ко многим» подходят лучше. Пользователь может ответить на несколько вопросов, и один вопрос может быть задан многим пользователям, и вам также нужно сохранить ответ, поэтому я бы изменил дизайн на это:
User Answer Question
---------------------------------------
user_id answer_id question_id
name user_id question
email question_id
password answer
А потом напиши свои красноречивые модели.
Когда пользователь входит в систему, вы извлекаете записи из таблицы ответов с зарегистрированным идентификатором пользователя и, если таковых нет, отображаете ему анкету.
Поскольку вы новичок в Laravel, вы можете проверить эти замечательные видеоуроки Джеффри Уэй в Laracasts Laravel 5 Основы.
Других решений пока нет …