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

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

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

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

解決済

Laravel テーブル内で選択したデータからのみ検索する

hntake
hntake

総合スコア3

Laravel

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

1回答

0リアクション

0クリップ

257閲覧

投稿2022/07/14 06:10

編集2022/07/15 02:39

前提

Userテーブル:全校生徒のデータ

そこから、自分のクラスの生徒のデータからだけで検索できるように実装したい

実現したいこと

一般的な検索コードで作成しましたが、検索結果が全く表示されません。(同様の書きかたで、テーブル全体から検索する場合には、問題なく検索出来ている。)

様々な検索パターンを試してみたものの、成功には至りません。どなたかご助言いただけないでしょうか?
宜しくお願い致します。

該当のソースコード

コントローラー画面

php

/*個別データ検索へ*/ public function individual(Request $request,$id) { /*入力ワード*/ $searchWord = $request->input('searchWord'); /*検索対象データ*/ $query = User::where('school1', '=', $id)->orWhere('school2', '=', $id); //名前が入力された場合、ユーザーテーブルから一致する名前を$queryに代入 if(!empty($searchWord)) { $query->where('name', 'LIKE', "%{$searchWord}%"); } //$queryをtuser_idの昇順に並び替えて$usersに代入 $users = $query->orderBy('id', 'desc')->paginate(10); return view('individual', [ 'users' => $users, 'searchWord' => $searchWord, ]); }

view画面

php

<div class="searchtable-responsive" > <div class="test"> <h2 class="text-center">ユーザー検索画面</h2> <!--検索フォーム--> <div class="row"> <div class="col-sm"> <form method="GET" action="{{ route('individual',['id'])}}"> <div class="form-group row"> <label class="col-sm-2 col-form-label" >ユーザー名</label> <!--入力--> <div class="col-sm-5"> <input type="text" name="searchWord" placeholder="検索したい生徒名を入力してください" value="{{ $searchWord }}"> </div> <div class="col-sm-auto"> <button type="submit" class="btn btn-primary ">生徒検索</button> </div> </div> </form> </div> </div> </div> <!--検索結果テーブル 検索された時のみ表示する--> @if (!empty($users)) <div class="test-hover"> <p>{{ $users->count() }}</p> <table class="table table-hover"> <thead style="background-color: #ffd900"> <tr> <th style="width:20%">生徒名</th> <th style="width:10%">学年</th> <th style="width:20%">テスト履歴表示へ</th> </tr> </thead> @foreach($users as $user) <tr> <td>{{ $user->name }}</td> <td>{{$user->year }}</td> <td ><div class="button"><a href="{{ route('id_view',['id'=>$user->id]) }}">表示</a></div></td> </tr> @endforeach </table> </div> <!--テーブルここまで--> <!--ページネーション--> <div class="d-flex justify-content-center"> {{-- appendsでカテゴリを選択したまま遷移 --}} {{ $users->appends(request()->input())->links() }} </div> <!--ページネーションここまで--> @endif </div> </div> </main> @endsection

サンプルデータ

php

$users =[ ['name' => '山田太朗', 'user_name' => 'yamada', 'school1' => '11', 'school2' => '000', 'place' => '沖縄県', 'year' => '中2', 'point' => '0', 'email' => 'taro@example.com', 'password' => 'password'] ];

create_users_table.php

php

Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('user_name')->unique(); $table->string('school1')->nullable()->default('000')->index(); $table->string('school2')->nullable()->default('000')->index(); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->string('image')->nullable(); $table->string('place'); $table->string('year'); $table->integer('point')->default(0); $table->integer('level')->default(0); $table->rememberToken(); $table->timestamps(); });

**web.php
**

php

/*個別データ検索*/ Route::get('/individual/{id}',[App\Http\Controllers\TestController::class,'individual'])->name('individual');

試したこと

コントローラー内
$query = User::where('school1', '=', $id)->orWhere('school2', '=', $id);を
$query = User::query();に

$query->where('name', 'LIKE', "%{$searchWord}%");を
$query->where('school1', '=', $id)->orWhere('school2', '=', $id)where('name', 'LIKE', "%{$searchWord}%");に変更

同様の結果でした。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

phper.k

2022/07/14 10:45

school1, school2 というカラムの意味はなんですか?
hntake

2022/07/14 12:49

クラス番号です。生徒は、二種類のクラス番号を持つ設定になっています。 例えば、クラス番号が11の生徒のデータだけを必要とします。生徒によっては、その番号がschool1 かschool2に入っている場合があります。 宜しくお願い致します。
phper.k

2022/07/14 14:16

まずはこの手の質問する時は、テーブルの構造を提示してください
phper.k

2022/07/14 15:02

あと、サンプルデータの提示をしてください
hntake

2022/07/15 00:52

ありがとうございます。 DBデータと、migrationコードを追加しました。 宜しくお願い致します。
phper.k

2022/07/15 01:22

routes/web.php はどうなっていますか?
hntake

2022/07/15 02:30

お世話になっております。 web.php追加しました。 宜しくお願い致します。
phper.k

2022/07/15 02:33

view画面 のHTMLに検索結果のレコードを表示する部分が書かれていないけど、それは省略ですか?それとも単純に書いてない?
hntake

2022/07/15 02:40

はい、省略していました。 今、全コードに変更しました。 宜しくお願い致します。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Laravel

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