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

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

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

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

解決済

ネストしたrelationテーブルの情報は取れてるのに、表示されない(laravel5.5)

kazoogon
kazoogon

総合スコア0

Laravel

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

1回答

0評価

0クリップ

17閲覧

投稿2018/05/16 16:25

編集2022/01/12 10:58

laravel5.5にて学校システム構築中
実現したいこと

「ネストしたテーブルの情報をブラウザー上に表示させる」

//phpにて自分の授業情報をとってくる $histories = Reservation_calender::where('user_id', '=' ,$user_id) ->where('date', '<' ,$date) ->with('time') ->with(['teacher.teacherImages' => function($query){//relationのまたそのrelation $query->where('profile', '=', 1)->latest('created_at'); }])->latest('date')->get();
//var_dump($histories)にて出力させた結果がこちら { "id":749 "time_id":7 "teacher_id":1 "user_id":1 "date":"2018-04-30" "created_at":"2018-04-28 01:17:33" "updated_at":"2018-04-28 01:17:33" "time":{ "id":7 "time":"16:00-17:00" "created_at":null "updated_at":null } "teacher":{ "id":1 "name":"goku sensei" "email":"sample@gmail.com" "created_at":"2018-03-18 14:55:36" "updated_at":"2018-03-18 14:55:36" "comment":"How are you???" "teacher_images":[{ "id":5 "teacher_id":1 "profile":1 "name":"5adef89b565a6"//これが画像ファイルの名前、これをimgタグに挿入し画像を表示したい "created_at":"2018-04-24 09:27:55" "updated_at":"2018-04-24 09:27:55" }] } }

コメントで書き込んだ通りですが、teacher_imagesのnameを使用させたい、しかし{{$histories->teacher->teacher_images[0]->name}}とするがTrying to get property 'name' of non-objectのエラー
→そこで{{$histories->teacher->teacher_images}}とし、確認すると何もhtml上に表示されない。

また{{$histories->time->time}}は16:00-17:00と表示されます

なぜネストしたteacher_imagesの情報はとってこれているのに、htmlに表示させようとすると何も表示されないのか不明です。
よろしくお願いします。

(またmodelでのrelation設定など、追記してほしいコードがあればおっしゃってください。)

回答を受けての追記

@foreach($histories as $history) <li> <div class="detail"> <div class="detail-img"> <img class="thumb img-circle" src="/images/teachers/{{$history->teacher->teacher_images[0]->name}}" alt="profile" width=70 height=70>//最終的にはファイル名をこのようにlaravelからとってきたい </div> <div class="detail-txt"> <div class="date">{{$history->date}}</div> <div class="time">{{$history->time->time}}</div> <div class="name"><a href=""></a>{{$history->teacher->name}}</div> {{$history->teacher->teacher_images}}//この部分browser上では何も表示されない </div> </div> </li> @endforeach

回答を受けての追記②

//サーバ側でsql取得できるように設定 $histories = Reservation_calender::where('user_id', '=' ,$user_id) ->where('date', '<' ,$date) ->with('time') ->with(['teacher.teacherImages' => function($query){ $query->where('profile', '=', 1)->latest('created_at'); }])->latest('date')->toSql();//元々は ->get(); var_dump($histories);
//実行結果 'select * from `reservation_calenders` where `user_id` = ? and `date` < ? order by `date` desc'

とろうとしていないようですね。。しかしなぜlogには出力されるのか謎ですが。。

ちなみに参考になるか分かりませんが、
他のページでも似たように先生の情報を取る
→ajax使用するためjs側にてjson形式にする
→そのjsonを利用してhtmlに記載すると表示される
(history.teacher.teacher_images[0].name のように記載(vue.js))

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

asahina1979
asahina1979

2018/05/16 23:16

クラスでなくハッシュ配列だからなのでは?
kazoogon
kazoogon

2018/05/17 17:36

回答ありがとうございます。おっしゃる通りだと思うのですが、それでも {{$histories->teacher->teacehr_images}} の場合何も出力されないっていうのがよくわからないんですよね。。。
asahina1979
asahina1979

2018/05/17 21:30

配列の場合アクセス方法が ["key"] だからな当然
asahina1979
asahina1979

2018/05/18 06:03

ふときづいたが、htmlspecialchars() expects parameter 1 to be stringというエラーが表示されているんじゃね
kazoogon
kazoogon

2018/05/18 06:25

出ていないですね。。
asahina1979
asahina1979

2018/05/18 06:52

当たり前ですが display_errors を off にしてたら 画面にはでないですよ
kazoogon
kazoogon

2018/05/18 10:16

そちらはonになっていることを確認いたしました

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Laravel

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。