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

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

ただいまの
回答率

89.50%

データベースから取得できないデータが存在する

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 1,095

toll_tree

score 29

前提・実現したいこと

データベースから取得できていないデータがあるため、その問題を解決したいです

発生している問題・エラーメッセージ

データベースから取得できないデータがあります
具体的には、helloファイルにアクセスした際に、下記index.blade.phpにより、データベースから取得した値が表示されますが、下記画像の「Age」カラムの値で、データが取得してこれず空欄になってしまっている部分があります。
イメージ説明

登録してあるデータはテーブルにすべて存在している状況です。
イメージ説明

該当のソースコード

以下は、ルート情報のweb.phpです

<?php

/*
|--------------------------------------------------------------------------
| 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::post('hello','HelloContoroller@post');

//use App\Http\Middleware\HelloMiddleware;

Route::get('hello/add','HelloController@add');
Route::post('hello/add','HelloController@create');

Route::get('hello','HelloController@index');

Route::get('hello/edit','HelloController@edit');
Route::post('hello/edit','HelloController@update');

Route::get('hello/del','HelloController@del');
Route::post('hello/del','HelloController@remove');


以下は、コントローラのHelloController.phpです

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests\HelloRequest;
use Validator;
use Illuminate\Support\Facades\DB;


class HelloController extends Controller{

    public function index(Request $request)
    {


        $items = DB::select('select * from people');
        return view('hello.index',['items' => $items]);

    }

    public function post(Request $request)

    {
        $items = DB::select('select * from people');
        return view('hello.index',['items' => $items]);
    }

    public function add(Request $request)

    {
        return view('hello.add');
    }

    public function create(Request $request)
    {

        $param = [
            'name' => $request->name,
            'mail' => $request->mail,
            'age' => $request->age,
        ];

        DB::insert('insert into people (name, mail, age)values(:name, :mail,:age)',$param);

        return redirect('/hello');
    }

    public function edit(Request $request)
    {
        $param = ['id' => $request->id];
        $item = DB::select('select * from people where id = :id',$param);
        return view ('hello.edit',['form' => $item[0]]);
    }

    public function update(Request $request)

    {
        $param = [
            'id' => $request->id,
            'name' => $request->name,
            'mail' => $request->mail,
            'age' => $request->age,
        ];

        DB::update('update people set name = :name,mail = :mail,
            age = :age where id = :id',$param);
            return redirect('/hello');
    }

    public function del(Request $request)

    {
        $param = ['id' => $request->id];
        $item = DB::select('select * from people where id = :id',$param);
        return view('hello.del',['form' => $item[0]]);
    }

    public function remove(Request $request)
    {
        $param = ['id' => $request];
        DB::delete('delete from people where id = :id',$param);
        return redirect('/hello');
    }

}


以下は、ビュー部分のindex.hello.phpです

@extends('layouts.helloapp')
@section('title','Index')
@section('menubar')
  @parent
  インデックスページ
@endsection
@section('content')
  <table>
    <tr><th>Name</th><th>Mail</th><th>Age</th></tr>
    @foreach($items as $item)

      <tr>
        <td>{{$item->name}}</td>
        <td>{{$item->mail}}</td>
        <td>{{$item->age}}</td>
      </tr>
    @endforeach
  </table>  
@endsection

@section('footer')
copyright 2017 tuyano.
@endsection

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

laravelのバージョンは5.8です。
phpは7.3.1です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m6u

    2019/05/21 20:05

    売り言葉に買い言葉、が過ぎますよ、お二人。mts10806さんは例えば2時間以上質問が放置されていたらコメントをつけるようにするとか一線引いたほうが良いかと。toll_treeさんも蓄積されたストレスは察しますが、だからといってmts10806さんを陥れようとする発言はいかがなものかと。そんなやり取りでトラブルが解消されるわけがないので、どうか冷静にご対応願います、と通りすがりにコメントして去る。

    キャンセル

  • m.ts10806

    2019/05/21 20:08

    m6uさん
    そうですね。お目汚し失礼しました。

    toll_treeさん
    Zuishinさんのコメント読んだらあとは適切に対応してください。

    キャンセル

  • toll_tree

    2019/05/21 20:13

    m6uさん
    そうですね。無用なやりとりが過ぎました。

    キャンセル

回答 3

checkベストアンサー

+2

「データが取得できていない」
のか
「取得はできているが表示ができていない(HTMLの組方ミスっている)」
のか問題を切り分けてください。

「書いた通り動く」わけですから「想定通り動かない」なら地道なデバッグ以外しかありません。

  1. php側でデバッグ(Laravelならdd()だけどdie()するのでコントローラ側、ビュー側両方でvar_dump()でも良い)
  2. ブラウザ「ソースを表示」

これでどちらかハッキリします。

1がNGなら2はNGにしかならないので実行しているSQLを直にDBに対して実行してどういう情報が出るか確かめること。
1がOK 2がNGとしたらエスケープせずに出力してみるとか、データを変更してみるとか、
色々試すしかないですね。

いずれにしても問題の切り分けをしないと次のtrial and errorに移れません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/21 19:33

    なぜひらがなで書くかは本人がきちんと適切に漢字を使って説明しています。「そうしないと分からない」と思われているということです。
    むしろ、何時間もグダグダ言っているあなたのほうがひらがな回答よりダメな初心者に見えるでしょう。
    さっき書いたけど、本当にこれで。では。

    キャンセル

  • 2019/05/21 19:37

    ひらがなのみで書くことは、誰がみても分かりづらいのは明確です。
    それを真似するのはいかがなものかと。

    キャンセル

  • 2019/05/21 21:09 編集

    誤投稿につき編集削除

    キャンセル

+1

登録してあるデータはテーブルにすべて存在している状況です。


うそです
そんざいしてないからひょうじされないのです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/21 16:12

    書き方はともかく言ってることは的を射てるんですけどね。

    キャンセル

  • 2019/05/21 17:01

    質問者のレベルに合わせた回答にしてるだけです。前回の質問といいmtsさんの回答は丁寧で解決につながるものなのに問題の解消がサッパリで礼も言えないようだったので、まるで読む能力と常識が無いと思って幼稚園児でも読めるレベルの回答にしてました。
    コメント頂いたついでに一言、ddは死ぬけどdumpなら死なずに使えるよ。

    キャンセル

  • 2019/05/21 17:11

    なるほど、こっちですね。
    https://readouble.com/laravel/5.8/ja/helpers.html#method-dump

    割と「実は問題が起きていないのに大問題だ」と焦って丸投げる質問者さんが多いのは事実かとは思います。落ち着いて必要な確認手順を踏めば何もなくて質問する前に解決するはずの質問も多い。若い方が多いんでしょうかね。

    キャンセル

0

DBデータに問題があるのか、viewの表示方法に問題があるのかの切り分けのために、
DBから取得した直後のデータを一度ダンプしてみてください。
この時点でデータが空である場合は、DBデータに問題があり、データが存在する場合は、viewでの表示に問題があります。

$items = DB::select('select * from people');
dd($items);

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/21 19:35

    長いコメントのやりとりでノイズも多いのでわかりづらいとは思うのですが、「データが入っていなかった」ことを質問者さんに確認してもらっているので、既に解決済みにできる状態だったりします。

    キャンセル

  • 2019/05/21 20:33

    なるほど、では解決済みですね!
    mtsさんお疲れ様です

    キャンセル

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

  • ただいまの回答率 89.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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