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

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

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

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

Q&A

解決済

1回答

1017閲覧

検索結果が0件のときにエラー文を表示させる

fsdfsa

総合スコア11

Laravel

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

0グッド

0クリップ

投稿2023/06/08 15:48

実現したいこと

掲示板の検索結果が0件のときにエラー分を表示させたいです。

前提

検索結果が0件のときはリストに何も表示されないです。

### 該当のソースコード ```index.blad.php @extends('layouts.app') @section('content') <div class='container'> <div class='container'> {!! Form::open(['url' => 'post/create']) !!} <h5 class='page-header'>名前</h5> <div class="form-group"> {!! Form::input('text', 'name', null, ['required', 'class' => 'form-control', 'placeholder' => '名前']) !!} </div> <h5 class='page-header'>本文</h5> <div class="form-group"> {!! Form::input('text', 'newPost', null, ['required', 'class' => 'form-control', 'placeholder' => '投稿内容']) !!} </div> <div> @if ($errors->any()) <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif </div> <button type="submit" class="btn btn-success pull-right">投稿</button> {!! Form::close() !!} </div> <h2 class='page-header2'>投稿一覧</h2> @foreach ($lists as $list) <hr> <div class=user> <span class=name>{{ $list->user_name }}</span> <span class=created>{{ $list->created_at }}</span> </div> <div class=post>{{ $list->post}}</div> <a class="btn btn-primary" href="/post/{{ $list->id }}/update-form">編集</a> <a class="btn btn-danger" href="/post/{{ $list->id }}/delete"onclick="return confirm('こちらの投稿を削除してもよろしいでしょうか?')">削除</a> @endforeach <!-- 検索 --> <div class="col-sm-4" style="padding:20px 0; padding-left:0px;"> <form class="form-inline" action="{{url('/')}}"> <div class="form-group"> <input type="text" name="keyword" class="form-control" placeholder="名前を入力してください"> </div> <input type="submit" value="検索" class="btn btn-info"> </form> </div> </div> @endsection <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

PostsController.php

1 2public function search(Request $request) 3{ 4$lists = DB::table('posts'); 5 6 7 $keyword = $request->input('keyword'); 8 9 if(!empty($keyword)) 10 { 11 $lists->where('post','Like', "%$keyword%"); 12 13 } 14$list= $lists->get(); 15return view('posts.index',['lists'=>$list]); 16 17} 18 19

試したこと

ググりましたがやり方がわかりません。
他のエラー分を応用して作ろうとしましたが無理でした、、

補足情報(FW/ツールのバージョンなど)

Laravel7

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

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

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

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

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

guest

回答1

0

ベストアンサー

@foreach ($lists as $list)

上記だと、データがない場合は0件の配列となり、ループは1回も回らないのでスキップされます。

@if (count($lists) === 0) ここに0件のときに出したいメッセージ @endif // または$listsはDBからget()で取得したオブジェクトなので下記でも良いはず @if ($lists->isEmpty()) ここに0件のときに出したいメッセージ @endif

というのを必要な部分に追記するか、差し込み位置がforeachと同じ部分であれば @forelse を使って書くこともできます。

@forelse ($lists as $list) <hr> <div class=user> <span class=name>{{ $list->user_name }}</span> <span class=created>{{ $list->created_at }}</span> </div> <div class=post>{{ $list->post}}</div> <a class="btn btn-primary" href="/post/{{ $list->id }}/update-form">編集</a> <a class="btn btn-danger" href="/post/{{ $list->id }}/delete"onclick="return confirm('こちらの投稿を削除してもよろしいでしょうか?')">削除</a> @empty ここに0件のときに出したいメッセージ @endforelse

ドキュメントのblade構文に記載があります。
調べ方ですが、ドキュメントを熟読するのが正確で一番よいです。
最近だとChatGPTなどのサービスに聞いてみるのもよいかもしれません。誤った回答が出る可能性もありますが、本質問程度であれば @if のやり方は回答例として出てきました。
https://readouble.com/laravel/7.x/ja/blade.html#loops
https://laravel.com/docs/7.x/blade#loops

投稿2023/06/08 18:11

Eggpan

総合スコア2775

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問