Ich denke, wie kann ich eine benutzerdefinierte Liste in meiner Tabelle speichern Benutzer? Wenn der Benutzer die erste Option auswählt, werden die Werte in meine role_id
mit einem Wert von 1 usw. eingefügt.Wie speichert man die ausgewählte Liste in Laravel mit One to Many Relationship?
<div class = "form-group {{ $errors->has('role') ? ' has-error' : '' }}">
<label for = "role" class = "control-label">Role</label>
<select class = "form-control" name = "role">
<option selected disabled>Please select role</option>
<option value = "role1">Supplies Officer</option>
<option value = "role2">Admin Officer</option>
<option value = "role3">Attorney</option>
<option value = "role4">Chairman</option>
</select>
@if ($errors->has('role'))
<span class = "help-block">{{ $errors->first('role') }}</span>
@endif
Beispiel-SQL:
INSERT INTO `users`(`role_id`, `email`, `username`) VALUES (1,'[email protected]','francis')
Ich habe eine Tabelle Rollen hat eine Eins-zu-Beziehung mit Benutzer Tisch.
Rollen Tabelle: Ich habe bereits eine Werte hier eingefügt.
Benutzer (Modell)
class User extends Model implements AuthenticatableContract
{
use Authenticatable;
protected $table = 'users';
protected $fillable = [
'username',
'email',
'password',
'role_id',
];
public function role()
{
return $this->belongsTo('Role');
}
}
Rolle (Modell):
class Role extends Model
{
protected $table = 'roles';
public function user()
{
return $this->hasMany('User');
}
}
Controller:
ich hier eine Idee haben, immer noch nicht, wie kann ich Fügen Sie die ausgewählte Liste ein oder speichern Sie sie. Jede Hilfe würde geschätzt werden!
public function postRegister(Request $request)
{
$this->validate($request, [
//This will be unique in users table
'email' => 'required|unique:users|email|max:255',
'username' => 'required|unique:users|alpha|max:20',
'password' => 'required|min:6',
'role' => 'required',
]);
$email = $request['email'];
$username = $request['username'];
$password = bcrypt($request['password']);
$role = $request['role'];
$user = new User();
$user->email = $email; //Accessing properties of Model
$user->username = $username;
$user->password = $password;
$user->save();
}
Warum funktioniert '$ user-> role_id = $ role' nicht für Sie? Ich denke, du überdenkst die Beziehung. – Devon
@Devon Ich habe das versucht, aber es sagt. Integritätseinschränkungsverletzung: 1452 Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl ('onlinesystem'.users', CONSTRAINT' users_role_id_foreign'. FREMDSCHLÜSSEL ('role_id') REFERENZEN' roles' ('id') – Francisunoxx
Weil Ihre form value ist 'role1' nicht' 1' .. Entweder entkleiden Sie die Zeichen oder ändern Sie die Werte – Devon