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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

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

Q&A

解決済

2回答

1296閲覧

<Laravel・MySQL>データベースからのデータ表示につきまして

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

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

0グッド

1クリップ

投稿2018/01/14 12:42

編集2018/01/14 12:53

お世話になっております。
現在、下記の点についてつまづいておりまして、
お知恵をご教示頂けますと幸いでございます。

Laravelも使い始めて間もない為、基本的な理解が抜けている
かもしれませんが、お力をお貸し頂けますと幸いです。

・やりたいこと(書籍レビューサイトの構築)
一覧画面ページにて、書籍のレビュー(review_table)と
レビューに紐づく該当書籍データ(書籍名等)を一覧表示させたい

・つまづいていること(データベース構造は下記に記載)
review_tableから順番にデータを表示することは出来ているのですが、
reviewに紐づく書籍ID(以下bookbase_id)を渡すことが出来ておらず、
Trying to get property of non-objecのエラーになってしまう

厳密には、review_table内に、bookbase_id列が「1」のみの
場合は表示が出来ているのですが、以下のような場合、
エラーに上記エラーになってしまいます。

review_id / bookbase_id / comment
1 / 1 / comment
2 / 2 / comment
3 / 3 / comment

・お力添えを頂きたいこと
勉強不足で申し訳ございません。
bookbase_selectモデルに、bookbase_id(2以降)を渡す為に、
どこを修正すると上手く動くのか分かりかねている為、
ご教示頂けますと幸いです。
宜しくお願い致します。

<データベースのテーブル構造>

<bookbase_table>※書籍に関するデータ bookbase_id(int)→これをキーとしてreview_tableと連携 bookbase_name(varchar)→書籍名 <review_table>※レビューに関するデータ review_id(int) bookbase_id<int>→これをキーとしてbookbase_tableと連携 comment<varchar>

<PostController.php>※コントローラー定義ファイル

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\review_select; class PostsController extends Controller { public function index() { $posts = \App\bookbase_select::all(); return view('layout',['posts' => $posts]); } public function ReviewContent() { //review一覧を取得 $reviews = \App\review_select::all(); return view('layout',['reviews' => $reviews]); } }

<review_select.php>レビュー取得の為のモデルファイル

<?php namespace App; use Illuminate\Database\Eloquent\Model; class review_select extends Model { //レビューテーブルからデータ取得 protected $table = 'review_table'; protected $primarykey = "review_id"; public function bookbase_select() { return $this -> belongsTo('App\bookbase_select','bookbase_id','bookbase_id'); } public function user_select() { return $this -> belongsTo('App\user_select','user_id','user_id'); } }

<bookbase_select.php>書籍データ取得の為のモデルファイル

<?php namespace App; use Illuminate\Database\Eloquent\Model; class bookbase_select extends Model { protected $table = 'bookbase_table'; protected $primaryKey = "bookbase_id"; public function bookbase_select() { return $this -> hasMany('App\review_select','bookbase_id','bookbase_id'); } public function image_select() { return $this -> belongsTo('App\image_select','bookbase_id','bookbase_id'); } }

<viewファイルの表示部分>

@foreach($reviews as $post) <div> <div> <div> <img src={{$post -> bookbase_select -> image_select -> path}}> </div> <div> <h2> {{$post -> bookbase_select -> bookbase_name}}</h2> <div> <div> <img src={{$post -> user_select -> image_select -> path}}> </div> <p> {{$post -> user_select -> user_name}}&nbsp;&nbsp;&nbsp; {{$post -> date}} </p> </div> <h3> {{$post -> review_id}}{{$post -> comment}} </h3> </div> </div> </div> @endforeach

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

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

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

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

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

guest

回答2

0

PHP

1$post -> bookbase_select -> image_select -> path

この部分ですが、bookbase_selectモデルには
image_selectモデルへのリレーションも定義されているのでしょうか?

また、bookbase_tableテーブルのimage_id(?)列がNULLのレコードがありませんか?
例えば画像が無い等の理由で、データによってはimage_idがNULLのレコードがある場合は
$post->bookbase_selectの結果がnullとなり、そのnullに対してpathを取得しようとして
non objectエラーが出る可能性があります。

投稿2018/01/15 04:54

Archsted

総合スコア452

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

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

0

ベストアンサー

他のオブジェクトもそうですが、viewファイルの$post -> bookbase_select$post -> bookbase_select()の間違いでは無いでしょうか?

投稿2018/01/15 00:25

hota1024

総合スコア354

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問