Я новичок в lavravel и пытаюсь удалить строку с помощью laravel и простого кода
<div class = "col-md-12">
@if (count($usuarios) > 0)
<?php echo $usuarios?>
<div class = "panel panel-default">
<div class = "panel-heading">
Listado de Usuarios
</div>
<div class = "panel-body">
<table class = "table table-striped task-table">
<thead>
<th>Usuario</th>
<th>Correo electrónico</th>
<th>Telefono</th>
<th>Celular</th>
<th>Acción</th>
</thead>
<tbody>
@foreach($usuarios as $usuario)
<tr>
<td class = "table-text">
<div>{{ $usuario->fname }} {{ $usuario->mname }} {{ $usuario->lname }} {{ $usuario->lname2 }}</div>
</td>
<td class = "table-text">
<div>{{ $usuario->email }} </div>
</td>
<td class = "table-text">
<div>{{ $usuario->telefono }} </div>
</td>
<td class = "table-text">
<div>{{ $usuario->celular }} </div>
</td>
<td>
<form action = "{{ url('usuario') }}/{{ $usuario->ident }}" method = "POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type = "submit" class = "btn btn-danger">
<i class = "fa fa-trash"></i>Delete
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
и у меня есть свой web.php
use App\Usuario;
use Illuminate\Http\Request;
Route::get('/', function () {
return view('welcome');
});
/*Mostrar los Usuarios*/
Route::get('/usuarios', function () {
$usuarios = Usuario::all();
return view('usuarios', [ 'usuarios' =>$usuarios ]);
});
Route::post('/usuario', function (Request $request) {
$validator = Validator::make($request->all(), [
'ident' => 'required|digits_between:5,12',
'fname' => 'required|max:20',
'mname' => 'required|max:20',
'lname' => 'required|max:20',
'lname2' => 'required|max:20',
'email' => 'email',
'telefono' => 'min:7',
'celular' => 'min:10',
]);
if ($validator->fails()){
return redirect('/usuarios')
->withErrors($validator)
->withInput();
}
$usuario = new Usuario;
$usuario->fk_id_tid = $request->id_tid;
$usuario->ident = $request->ident;
$usuario->fname = $request->fname;
$usuario->mname = $request->mname;
$usuario->lname = $request->lname;
$usuario->lname2 = $request->lname2;
$usuario->email = $request->email;
$usuario->telefono = $request->telefono;
$usuario->celular = $request->celular;
$usuario->save();
return redirect('/usuarios');
});
**Route::delete('/usuario/{ident}', function ($ident) {
Usuario::findOrFail($ident)->delete();**
return redirect('/usuarios');
});
Когда я пытаюсь удалить строку, появляется ошибка получения:
SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец usuario.id в предложении where (SQL: выберите * из usuario, где usuario.id = 14397755 предел 1)
Мне нужно найти usuario.ident для удаления этой строки ..
На самом деле мне нужно создать композицию с {fk_id_tid & identify} Если я найду его -> удалите эту строку ..






Laravel не поддерживает составные ключи, см. здесь. Таким образом, вам придется вручную выполнить where() для поиска в этой строке.
Usuario::where('ident', $ident)->firstOrFail()->firstOrFail()->delete();
Если вы также передаете fk_id_tid в своем маршруте удаления, добавьте еще один where() для поиска по внешнему ключу, например
Route::delete('/usuario/{fk_id_tid}/{ident}', function ($fk_id_tid, $ident) {
Usuario::where('fk_id_tid', $fk_id_tid)->where('ident', $ident)->firstOrFail()->delete();
return redirect('/usuarios');
});
Спасибо за ответ, - firstOrfail - это findOrfail? --- Ну, я пробую оба, пока ничего ...
Я пытаюсь:
Route::delete('/usuario/{ident}', function ($ident) {
Usuario::where('ident', $ident)->findOrFail()->delete();
return redirect('/usuarios');
});
Передача в форме
<form action = "{{ url('usuario') }}/{{ $usuario->ident }}" method = "POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
ошибки ..
Laravel не поддерживает эту функцию, но вы можете использовать
where()для эмуляции этого.