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

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

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

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

Q&A

解決済

1回答

230閲覧

a~zのリンクを踏むと該当のイニシャルをデータベースから持ってくるようにしたい

sirakawa

総合スコア20

Laravel

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

0グッド

0クリップ

投稿2020/02/09 03:05

編集2020/02/09 22:10

laravelでa~zのリンクを踏むとデータベースのtitleから該当するイニシャルを表示したいが現状ではレスポンス??が返ってくるので
var_dump($items);にデータベースから持ってきた情報を入れたい。
先輩方の知恵を借りたく質問させていただきました。よろしくおねがいいたします。

###コントローラー

public function az(Request $request){ $items = Sample::where('title', 'like', '%'.$request->get('keyword').'%'); var_dump($items); }

var_dump($items);結果

(Illuminate\Routing\RoutingServiceProvider)#11 (2) { ["app":protected]=> *RECURSION* ["defer":protected]=> bool(false) } [3]=> object(Illuminate\Auth\AuthServiceProvider)#23 (2) { ["app":protected]=> *RECURSION* ["defer":protected]=> bool(false) } [4]=> object(Illuminate\Cookie\CookieServiceProvider)#50 (2) { ["app":protected]=> *RECURSION* ["defer":protected]=> bool(false) } [5]=> object(Illuminate\Database\DatabaseServiceProvider)#53 (2) { ["app":protected]=> *RECURSION* ["defer":protected]=> bool(false) } [6]=> object(Illuminate\Encryption\EncryptionServiceProvider)#60 (2) { ["app":protected]=> *RECURSION* ["defer":protected]=> bool(false) } [7]=>

###ブレード側

@foreach (range('a', 'z') as $i) <a href="{{ url('/posts/az') }}" name="keyword">{{ $i }}</a> @endforeach

###コントローラー編集
ファンクション名も含め記載

public function az(Request $request){ $az = $request->keyword; var_dump($az); $items = Sample::where('title', 'like', $request->get('keyword').'%')->get(); var_dump($items); return view('posts.test'); }

###web.php
ルート

Route::get('/posts/az', 'PostsController@az');

###補足
フレームワーク:Laravel5.8

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/02/09 03:13

何に困っていて何ができないのか読み取れません。
guest

回答1

0

ベストアンサー

php

1$items = sample::where('title', 'like', '%'.$request->get('keyword').'%');

php

1$items = sample::where('title', 'like', '%'.$request->get('keyword').'%')->get();

web.php

@foreach (range('a', 'z') as $i) <a href="{{ url('/posts/az') }}" name="keyword">{{ $i }}</a> @endforeach

こう設定していると、全てのリンクは posts/az となって a ~ z を区別するものが何も設定されていないことは理解していますか?

a を指定した時、posts/az/a、b なら posts/az/b というように、区別してアクセスしないと、コントローラーに処理を書いても意味がないですよね?

ですので、一例ですが、

web.php

php

1Route::get('/posts/az/{initial}', 'PostsController@az')->name('posts.az');

というように設定し、コントローラーでは、

php

1class SampleController extends Controller 2{ 3 public function az(Request $request, string $initial){ 4 $items = Sample::where('title', 'like', $initial . '%')->get(); 5 return view('posts.test', compact('items')); 6 } 7}

となる。

また、bladeの方も仕様に合わせて、

php

1@foreach (range('a', 'z') as $i) 2<a href="{{ route('posts.az', ['initial' => $i]) }}">{{ $i }}</a> 3@endforeach

とでも設定しておけばよかろう。

投稿2020/02/09 03:34

編集2020/02/10 10:07
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sirakawa

2020/02/09 07:51

早々のご回答ありがとうございます。 今までよくわかんないレスポンスが返ってきてましたが、今回はしっかりとデータベースの情報も含まれてました! しかし、データベースの情報全てを取得しています。 これをa~zのイニシャルを1つクリックしたらDBのtitleの頭文字にそのイニシャルが含まれているものだけをvar_dumpで取得したいのですが書き方が分かりません。 もしその他方法あれば、教えていただきたいです。
退会済みユーザー

退会済みユーザー

2020/02/09 07:55

SQLが間違っているからです。
sirakawa

2020/02/09 12:33

考えた挙句、これしか思い浮かびませんでした。 $items = Ico::where('title', 'like', $request->get('keyword').'%')->get(); var_dump($items);
退会済みユーザー

退会済みユーザー

2020/02/09 12:43

それであっているはずですよ
sirakawa

2020/02/09 12:43

すみません。もう一つコメントします。 そもそもブレード側からリクエストを送ってvar_dumpで受け取った結果がNULLでした。
退会済みユーザー

退会済みユーザー

2020/02/09 12:44

何を言いたいのか読み取れません
退会済みユーザー

退会済みユーザー

2020/02/09 12:52

a タグの使い方もめちゃくちゃですね… laravel以前にHTMLの知識も足りていないようですよ。
退会済みユーザー

退会済みユーザー

2020/02/09 12:58

あなたの質問に回答するためには、以下の情報を出してもらわないといけません。 ・web.php のルーティング部分 ・controller のクラス名を含めたメソッド
kyoya0819

2020/02/09 16:20

さらーと見ましたが、どこでPOSTしてます? そもそも、この処理をPOSTでやる必要性とは? あとは、Kosuke_Shibuyaさんがおっしゃるように広範囲でのコードが必要になります。
sirakawa

2020/02/09 23:46

ご指摘いただきました部分掲載致しました
sirakawa

2020/02/09 23:47

asuchi0819さん POSTというより$requestで受け取っているつもりです。何卒宜しくお願い致します。
sirakawa

2020/02/10 00:38

Route::get('/posts/az', 'PostsController@az');こちらです
退会済みユーザー

退会済みユーザー

2020/02/11 09:44

コードもらったら、ノーリアクションですか? 理解できたのかどうかの返事もないのであれば、今後回答する必要はないですね。
sirakawa

2020/02/11 12:45

すみませんすみませんベストアンサーの場合コメントする場所がありませんでした。結果としては正常に想像していた通り実行がされ大満足です。 感謝申し上げます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問