質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

3回答

1509閲覧

Laravelで削除機能を作成したのですが、1行目以外は削除出来るのですが1行目だけ削除出来ません。

Shinji1129

総合スコア3

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2019/08/16 04:02

前提・実現したいこと

####リストの1行目を削除したい
Laravelで削除機能を作成したのですが、1行目以外は削除出来るのですが1行目だけ削除出来ません。

ページを変わってもリストの1行目の削除だけ削除出来ず、同じidでも1行目以外にあると削除出来るようです。
エラーは出ません。

該当のソースコード

listbladephp

1 2@extends('layouts.layout') 3 4@section('content') 5 <header id=""> 6   <h1>Laravel Project</h1> 7<div class="nav"><a href="" class="btn list-btn">ログアウト</a> 8 <a href="" class="btn list-btn">管理者情報</a></div> 9 </header> 10 <section id="serch"> 11 <div class="head"><h2>参加者名簿一覧</h2></div> 12 <form action="" method="get"> 13 <div class="serch-wrap"> 14 <div class="serch"> 15 <input type="text" name="keyword" class="key-form" value="" placeholder="検索キーワード"> 16 </div> 17 <div class="key"> 18 <input type="submit" value="検索" class="btn serch-btn"> 19 </div> 20 <a href="{{ action('MemberController@new_Index') }}" class="btn create-btn">新規登録</a> 21 </div> 22 </section> 23 <section id="list-table"> 24 <table class="list"> 25 <thead> 26 <tr> 27 <th>ID</th> 28 <th>名前</th> 29 <th>Email</th> 30 <th>電話番号</th> 31 <th colspan="3"></th> 32 </tr> 33 </thead> 34 <tbody> 35 @foreach($members as $member) 36 <tr> 37 <td>{{$member->id}}</td> 38 <td>{{$member->name}}</td> 39 <td>{{$member->email}}</td> 40 <td>{{$member->tel}}</td> 41 <td><a href="" class="btn detail-btn">詳細</a></td> 42 <td><a href="{{ action('MemberController@edit_index',[$member->id]) }}" class="btn edit-btn">編集</a></td> 43 <td> 44 <form action="/member/delete/{{$member->id}}" method="post"> 45 @csrf 46 <input type="submit" value="削除" class="btn dell-btn"></td> 47 </form> 48 </tr> 49 @endforeach 50 </tbody> 51 </table> 52 </section> 53 54 <!-- page controll --> 55 <div class="pager"> 56 {{ $members->links() }} 57 </div> 58@endsection

webphp

1 2<?php 3 4/* 5|-------------------------------------------------------------------------- 6| Web Routes 7|-------------------------------------------------------------------------- 8| 9| Here is where you can register web routes for your application. These 10| routes are loaded by the RouteServiceProvider within a group which 11| contains the "web" middleware group. Now create something great! 12| 13*/ 14 15Route::get('member/list', 'MemberController@getIndex'); 16 17Route::group(['prefix' => 'member'], function() { 18 Route::get('list', 'MemberController@getIndex'); 19 Route::get('new', 'MemberController@new_Index'); 20 Route::patch('new', 'MemberController@new_confirm'); 21 Route::post('new', 'MemberController@new_finish'); 22}); 23 24Route::group(['prefix' => 'member'], function() { 25 Route::get('edit/{id}/', 'MemberController@edit_index'); 26 Route::patch('edit/{id}/', 'MemberController@edit_confirm'); 27 Route::post('edit/{id}/', 'MemberController@edit_finish'); 28}); 29 30Route::group(['prefix' => 'member'], function() { 31 Route::post('delete/{id}/', 'MemberController@member_delete'); 32});

MemberController

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7class MemberController extends Controller 8{ 9 10 public function getIndex() 11 { 12 $members = \App\Member::paginate(10); 13 return view('layouts.member.list')->with('members',$members); 14 } 15 16 public function new_index() 17 { 18 return view('layouts.member.new_index'); 19 } 20 21 public function new_confirm(\App\Http\Requests\CheckMemberRequest $request) 22 { 23 $data = $request->all(); 24 return view('layouts.member.new_confirm')->with($data); 25 } 26 27 public function new_finish(Request $request) 28 { 29 $member = new \App\Member; 30 31 $member->name = $request->name; 32 $member->email = $request->email; 33 $member->tel = $request->tel; 34 $member->addr = $request->addr; 35 $member->birth = $request->birth; 36 $member->save(); 37 38 return redirect()->to('member/list'); 39 } 40 41 public function edit_index($id) 42 { 43 $member = \App\Member::findOrFail($id); 44 return view('layouts.member.edit_index')->with('member',$member); 45 } 46 47 public function edit_confirm(\App\Http\Requests\CheckMemberRequest $request) 48 { 49 $data = $request->all(); 50 return view('layouts.member.edit_confirm')->with($data); 51 } 52 53 public function edit_finish(Request $request, $id) 54 { 55 $member = \App\Member::findOrFail($id); 56 57 $member->name = $request->name; 58 $member->email = $request->email; 59 $member->tel = $request->tel; 60 $member->addr = $request->addr; 61 $member->birth = $request->birth; 62 $member->save(); 63 64 return redirect()->to('member/list'); 65 } 66 67 public function member_delete($id) 68 { 69 $member = \App\Member::find($id); 70 $member->delete(); 71 72 return redirect()->to('member/list'); 73 } 74}

補足情報

laravel5.8
laradock
Mysql
TablePlus
github
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/16 04:18

$member = \App\Member::find($id); ↑この$memberは想定通りの情報がとれているのでしょうか。 指定のidがきていますか? また <form action="/member/delete/{{$member->id}}" method="post"> ↑ここの$member->idは間違いなくその人のIDが入っているのでしょうか
guest

回答3

0

ベストアンサー

formタグとtdタグが噛み合ってないのでそれが原因でformが二重と解釈されてしまっていたりしませんか?

投稿2019/08/16 05:33

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/16 05:34

気づかなかった。その可能性は高そうですね。
Shinji1129

2019/08/16 06:03

ありがとうございます。全く気がつきませんでした。 しかしタグを修正しても処理されませんでした。
Shinji1129

2019/08/17 07:16

訂正します。 やはりformタグが噛み合っておりませんでした
guest

0

自己解決しました。
検索機能を追加したところ正常に削除されるようになりました。
ページネーションに不備があったように考えますが、はっきりとは分かりません。
修正コードはgithubにて、
DockerLaravel
ありがとうございました

投稿2019/08/16 07:09

Shinji1129

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikkame

2019/08/17 06:52

https://github.com/Shinji1129/DockerLaravel/blob/121b7af2e68bc696ce0740be366703b7876980f5/laravel-practice/resources/views/layouts/member/list.blade.php github見ましたが、やはり質問時点で<form>タグの数が一致しておりません。 おそらく、検索機能を実装した時に閉じタグが追加されたことにより、たまたまうまく解釈されるようになったのでしょう。 ページネーションは関係ないかと思います
mikkame

2019/08/17 06:53

11行目の対になる閉じタグがない感じですね
Shinji1129

2019/08/17 07:13

再度ご覧いただきありがとうございます。 はっきり確認しました! 全くその通りです!! 私の確認不足です。ありがとうございました。
guest

0

idが正しく来てないように思いますので、idが意図したものかどうか確認してください。

あと下記も試してみてください。

find()ではなくwhere()

主キーなのであればdestroy()

投稿2019/08/16 04:24

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shinji1129

2019/08/16 06:03

ありがとうございます。 where(), destroy()共に試したのですが1行目だけ処理されません。 2行目以降はエラーがでることもあり、 1行目は実行しても処理すらかけられていないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問