#php #laravel #laravel-6 #laravel-7
#php #laravel #laravel-6 #laravel-7
Вопрос:
Я пытаюсь создать CRUD с именем Usuarios (пользователи) с помощью начального ключа из таблицы Perfiles (профили), начальный ключ — это идентификатор из профилей, но я не знаю, как сделать это с помощью select
Это МОЙ FORM.BLADE.PHP
<select name="idPerfil" id="idPerfil" class="form-control">
<option value="">Eliga un nombre de perfil </option>
@foreach ($perfiles as $perfil)
<option value="{{ $perfil['id'] }}"
@if ($perfil->id === $usuario->idPerfil)
selected
@endif
> {{ $perfil['NombrePerfil'] }}
</option>
@endforeach
</select>
PerfilesContoller.php
public function edit($id)
{
$perfil= Perfiles::findOrFail($id);
return view('perfiles.edit',compact('perfil'));
}
общедоступная функция create()
{
return view('perfiles.create');
}
ЭТО МОЙ USUARIOSCONTROLLER.PHP
public function create()
{
//
$perfiles = Perfiles::all();
return view('usuarios.create',compact('perfiles'));
}
редактирование общедоступной функции ($ id)
{
//
$usuario= Usuarios::findOrFail($id);
$perfiles = Perfiles::all();
return view('usuarios.edit',compact('usuario','perfiles'));
}
Таблица Pefiles
public function up()
{
Schema::create('perfiles', function (Blueprint $table) {
$table->increments('id');
$table->string('NombrePerfil')->unique();
$table->timestamps();
});
}
таблица обычаев
public function up()
{
Schema::create('usuarios', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('idPerfil');
$table->string('Nombre');
$table->string('UserName')->unique();
$table->string('Email')->unique();
$table->string('Password');
$table->foreign('idPerfil')->references('id')->on('perfiles');
$table->rememberToken();
$table->timestamps();
});
}
Комментарии:
1. Добро пожаловать в SO… где этот код, в котором вы пытаетесь создать нового пользователя и не можете? единственное представление, которое вы показываете, похоже, предназначено для редактирования пользователя, а не для создания
2. У меня есть Form.blade.php , create.blade.php и edit.blade.php , Form.blade является общим для create и edit.
Ответ №1:
Для начала я думаю, что в какой-то момент вы обращаетесь к первичному ключу так, как будто perfil
это массив, а затем рассматриваете его как объект в другом, вы делаете это: $perfil['id']
вместо этого: $perfil->id
. Попробуйте структурировать свой блейд следующим образом:
<select name="idPerfil" id="idPerfil" class="form-control">
<option value="">Eliga un nombre de perfil </option>
@foreach ($perfiles as $perfil)
<option value="{{ $perfil->id }}"
@if ($perfil->id === $usuario->idPerfil) selected @endif>
{{ $perfil->NombrePerfil }}
</option>
@endforeach
</select>
Комментарии:
1. вы можете получить доступ к атрибутам модели в любом случае, они, вероятно, должны придерживаться одного, но функционально здесь это не имеет значения
2. Верно … в его вопросе так много неправильных вещей, сначала я не уверен, что он указал столбец первичного ключа при объявлении отношения в модели, потому что, если он этого не сделал, laravel по умолчанию будет использовать соглашение,
perfil_id
поэтомуidPerfil
это не сработает. Во-вторых,profile
должен быть дочерним элементомuser
, а не наоборот, чтобы в конечном итоге это не сработало… Я только устранял очевидное.3. Вы хотите увидеть мои таблицы?
4. Я отредактировал свой вопрос