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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1475閲覧

コントローラーに書いたSQLの実行結果をビューに表示したい。

kerokeroryu2631

総合スコア14

Laravel

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/09/12 14:15

編集2020/09/13 05:07

前提・実現したいこと

コントローラーに書いたSQLの実行結果をビューに表示したい。
(初心者なので、言葉が不正確なのは、すみません。)
コントローラーに書いたSQLの実行結果をビューに表示しようとしたら、以下のエラーメッセージが発生しました。

エラーメッセージ

ErrorException array_merge(): Argument #2 is not an array

ビュー

//ファイル名:index.blade.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>Hello,</h1> <h1>{{ $proverb }}</h1> </body> </html>

コントローラー

//ファイル名:ProverbFormController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class ProverbFormController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // $proverbs = DB::table('proverbs')->select('proverb_contact')->inRandomOrder() ->first(); // dd($proverbs); return view('Proverb.index', $proverbs); //return view('Proverb.index'); } }

ルート

<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ // Route::get('/', function () { // return view('welcome'); // }); Route::get('/', 'ProverbFormController@index'); Route::resource('Proverb', 'ProverbFormController');

試したこと

・ひたすら半日ググり続けて、サイトに載っていることを試した。

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

Laravel Framework 7.27.0

解決後、dd、ソース

ビュー

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>Hello,</h1> <h1>{{ $proverbs->proverb_contact }}</h1> </body> </html>

コントローラー

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class ProverbFormController extends Controller { /** ** Display a listing of the resource. ** ** @return \Illuminate\Http\Response **/ public function index() { // $proverbs = DB::table('proverbs')->select('proverb_contact')->inRandomOrder() ->first(); // $aiuer='あいうえお'; // dd($aiuer); dd($proverbs); return view('Proverb.index', compact('proverbs')); //return view('Proverb.index'); } }

イメージ説明

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

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

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

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

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

m.ts10806

2020/09/12 20:47

>ひたすら半日ググり続けて、サイトに載っていることを試した。 時間だけ書かれても他人に伝わる情報はゼロです(同じようなことをやっていても人なよって時間の経過や使い方は違うからです)。 どのようなキーワードを投入してどのような記事を参照して何を試したのか具体的に記載してください。 それに$proverbsは文字列ではないですよね。
kerokeroryu2631

2020/09/13 04:09 編集

失礼しました。 試しこと ・xammpの再起動 ・$proverbsにCompact関数をつける その他、いくつか試しましたが、忘れてしまいました。次回から覚えておくようにします。
guest

回答2

0

ベストアンサー

diff

1class ProverbFormController extends Controller 2{ 3 /** 4 * Display a listing of the resource. 5 * 6 * @return \Illuminate\Http\Response 7 */ 8 public function index() 9 { 10 $proverbs = DB::table('proverbs')->select('proverb_contact')->inRandomOrder() 11 ->first(); 12 13- return view('Proverb.index', $proverbs); 14+ return view('Proverb.index', compact('proverbs')); 15 } 16}

diff

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8</head> 9 10<body> 11 12 <h1>Hello,</h1> 13- <h1>{{ $proverb }}</h1> 14+ <h1>{{ $proverbs }}</h1> 15 16</body> 17 18</html>

イメージ説明

投稿2020/09/13 01:51

編集2020/09/13 05:10
phper.k

総合スコア3923

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

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

kerokeroryu2631

2020/09/13 04:14

ご回答ありがとうございます。 ご指摘の箇所を修正したら、以下のエラーが出ました。 ErrorException htmlspecialchars() expects parameter 1 to be string, object given
phper.k

2020/09/13 04:16

それだけ見せられても判断できないよ
phper.k

2020/09/13 04:17

{{ $proverbs.proverb_contact }} 多分こうだろうけど、提示された情報だけでは、断定できないです。
phper.k

2020/09/13 04:20

ご自身はエラーメッセージの見方わかりませんか?
kerokeroryu2631

2020/09/13 04:21

分かりません。ググってもヒットしないことが多いです。
phper.k

2020/09/13 04:24

ググる前にちゃんと読まなきゃいけないです。 読みべきエラーメッセージは、以下の部分。 htmlspecialchars() expects parameter 1 to be string, object given (View: C:\xampp\htdocs\proverb\proverb\resources\views\proverb\index.blade.php) あなたが先ほど、伝えたエラーは「htmlspecialchars() expects parameter 1 to be string, object given 」 で、「(View: C:\xampp\htdocs\proverb\proverb\resources\views\proverb\index.blade.php)」この情報が伝えられていません。 どこで発生したものなのか?を質問する時に伝えることができないと回答者はただ困るだけです。
phper.k

2020/09/13 04:25

dd($proverbs); がどんな値になっているのかを伝えてもらわないと回答できないですよね?
kerokeroryu2631

2020/09/13 04:26

了解しました。エラーがどこで発生したのかを明記するようにします。
kerokeroryu2631

2020/09/13 04:31 編集

dd($proverbs);の結果は以下でした。コントローラーの$proverbsをddしました。 {#1310 ▼ +"proverb_contact": "ygp79CGWZPToIj0BK7xx" }
phper.k

2020/09/13 04:33

こうか {{ $proverbs->proverb_contact }}
kerokeroryu2631

2020/09/13 04:35

$proverbsが配列になっていないということかもしれません。
phper.k

2020/09/13 04:35

dd($proverbs); の結果は?
kerokeroryu2631

2020/09/13 04:36

{{ $proverbs->proverb_contact }} に修正したら動きました。ありがとうございました!
kerokeroryu2631

2020/09/13 04:38

dd($proverbs); の結果は上に上げたものです。{{ $proverbs->proverb_contact }}で動いたということは配列なのだと思います。 dd($proverbs);の結果は以下でした。コントローラーの$proverbsをddしました。 {#1310 ▼ +"proverb_contact": "ygp79CGWZPToIj0BK7xx" }
phper.k

2020/09/13 04:42 編集

dd($proverbs);をすると、他にも情報出てませんか? データの型の情報が書かれていないので、多分目に入っていないのだろうと思ってます。そうでないと、 「$proverbsが配列になっていないということかもしれません。 」 こんなコメントが出てこないでしょう。 ですので、再度、聞いてみました
kerokeroryu2631

2020/09/13 04:45 編集

dd($proverbs);をもう一回しているのですが、型名は記載されていないです(上でコピペした以上の情報は書いていないです)。 波括弧({})がついていたら、配列という意味なのでしょうか。
phper.k

2020/09/13 04:48

dd($proverbs); はどこに書いてますか? コントローラーに書きましたか?
kerokeroryu2631

2020/09/13 04:48

いま、配列でなく、変数に格納してddしたら、波括弧がついていませんでした。 波括弧=配列という意味なのかもしれません。
phper.k

2020/09/13 04:50

スクショ貼ってください。 初心者の言う文字情報は信用できないです。
phper.k

2020/09/13 04:55

ソースコードもセットで。
kerokeroryu2631

2020/09/13 04:55

スクショは解決方法しか貼ることできないですか?
phper.k

2020/09/13 04:55

質問に貼ることできます。
kerokeroryu2631

2020/09/13 04:56

解決方法に貼ったらサイトがエラー置きました。
phper.k

2020/09/13 04:57

私はこのサイトの管理者ではありません。
kerokeroryu2631

2020/09/13 05:08

失礼しました。 質問にソースとddのスクショを貼りました。
phper.k

2020/09/13 05:12

回答に自分の手元で配列を dd したときのショットを貼り付けました。 ご覧のように、データ型が表示されているのが確認できると思います。 おそらく xampp の設定が影響しているのかな? 原因は知りません。
kerokeroryu2631

2020/09/13 05:16

スクショ、ありがとうございます。勉強になりました。 全般的に非常に助かりました。本当にありがとうございました。
phper.k

2020/09/13 05:18

デバッグの技術をつけると開発の速度も上がるし、問題の解決も早くなります。 エラーで思考停止して、闇雲にググるのではなく、まずはしっかりとエラーを読み解くことを心がけてください。
guest

0

削除しました。削除しました。

投稿2020/09/13 04:53

編集2020/09/13 05:10
kerokeroryu2631

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問