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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

2回答

1380閲覧

Laravel review相手のuser_idを取得したい

m2B

総合スコア20

Laravel

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2021/01/06 05:23

前提・実現したいこと

Matchingsテーブル

カラム名属性内容
idintegerマッチングID
apply_idinteger申請user_id
approve_idinteger承認user_id
offer_idintegeroffer_id

Reviewsテーブル

カラム名属性内容
idintegerマッチングID
titlestringタイトル
bodystring内容
reviewer_idintegerレビューしたuser_id
reviewed_idintegerレビューされたuser_id
matching_idintegerマッチングのid

マッチングしたuser同士でreviewをしたいのですが、reviewer(レビューしたuser)は現在ログインしているuserで取得できますが,reviewed(レビューされるuser)のuser_idが取得出来なくて困っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

エラーメッセージ

該当のソースコード

Controller

1public function new($id) 2 { 3 $current_user = Auth::id(); 4 $matching = Matching::where('id', $id)->first(); 5 return view('users.new', [ 6 'current_user' => $current_user, 7 'matching' => $matching, 8 ]); 9 } 10 11 public function store(Request $request, $id) 12 { 13 $current_user = Auth::user(); 14 $matching = Matching::find($id); 15 $reviewer = Matching::where('apply_id', Auth::id())->first(); 16 17 $review = Review::create([ 18 'star' => $request->star, 19 'title' => $request->title, 20 'body' => $request->body, 21 'reviewer_id' => $current_user->id, 22 'reviewed_id' =>$matching->approve_id, 23 'matching_id' => $matching->id 24 ]); 25 26 return redirect()->route('users.show', [ 27 'name' => $request->user()->name, 28 ]); 29 }

Blade

1<div class="c-user--Container"> 2 <h5 class="c-user--featureTitle">ユーザー名</h5> 3 <div class="c-user--featureArea"> 4 <div class="c-user"> 5 <img src="/img/wed.jpeg" alt=""class="c-user--image--sm" > 6 @if($current_user !== $matching->apply_id && $matching->approve_id) 7 <span class="">{{ $matching->apply->name}}</span> 8 @else 9 <span class="">{{ $matching->approve->name}}</span> 10 @endif 11 </div> 12 </div> 13 </div> 14 <div class="c-user--Container"> 15 <h5 class="c-user--featureTitle">評価</h5> 16 <div class="c-user--featureArea"> 17 <p class="c-user--body"> 18 <comment-star 19 rating={{ $reveiw->star ?? old('star')}} 20 > 21 22 </comment-star> 23 </p> 24 </div> 25 </div> 26 <div class="c-user--Container"> 27 <h5 class="c-user--featureTitle">タイトル</h5> 28 <div class="c-user--featureArea"> 29 <input type="text" name="title" value="{{ $review->title ?? old('title')}}" placeholder="タイトル名を入力してください" class="c-user--input"> 30 </div> 31 </div> 32 <div class="c-user--Container"> 33 <h5 class="c-user--featureTitle">内容</h5> 34 <div class="c-user--featureArea"> 35 <textarea name="body" value="" placeholder="内容を入力してください" class="c-user--text">{{ $review->body ?? old('body')}}</textarea> 36 </div> 37 </div> 38 <div class="p-comment--button"> 39 <button class="c-button--message">レビューを投稿する</button> 40 </div>

試したこと

例えば申請者->承認者のレビューは上記のとおり上手くいくのですが
承認者->申請者のレビューはデータの挿入がうまく行かないです。
apply_idとapprove_idはそれぞれmatchingsテーブルに格納されています。
ログインしている以外のuser_idの取得方法がわからないので
教えていただけると幸いです。

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

Laravel 7.3
php 7.4
Mac

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

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

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

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

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

guest

回答2

0

Controller

1public function store(Request $request, $id) 2 { 3 $current_user = Auth::user(); 4 $matching = Matching::find($id); 5 $reviewed = Matching::where('apply_id', $matching->apply_id ) 6 ->orWhere('approve_id', $matching->approve_id)->first(); 7 8 if($matching->apply_id !== Auth::id() ) { 9 $review = Review::create([ 10 'star' => $request->star, 11 'title' => $request->title, 12 'body' => $request->body, 13 'reviewer_id' => $current_user->id, 14 'reviewed_id' => $matching->apply_id, 15 'matching_id' => $matching->id 16 ]); 17 return redirect()->route('users.show',[ 18 'name' => $matching->apply->name 19 ]); 20 }elseif($matching->approve_id !== Auth::id()){ 21 $review = Review::create([ 22 'star' => $request->star, 23 'title' => $request->title, 24 'body' => $request->body, 25 'reviewer_id' => $current_user->id, 26 'reviewed_id' => $matching->approve_id, 27 'matching_id' => $matching->id 28 ]); 29 return redirect()->route('users.show',[ 30 'name' => $matching->approve->name 31 ]); 32 }else{ 33 return redirect()->route('mypage.matching'); 34 } 35 } 36 37reviewerとreviewedにちゃんとした数字が入りましたがリファクタリングするならどういったところをしたら良いでしょうか?

投稿2021/01/06 12:09

m2B

総合スコア20

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

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

0

reviewed(レビューされるuser)のuser_idが取得出来なくて困っています。

マッチングに対してレビューを行うという理解でよろしいでしょうか?
であれば、マッチングの時点で相手と自分担っているはずなので
マッチングの自分ではない方のIDをとればいいのではないでしょうか

投稿2021/01/06 10:00

mikkame

総合スコア5036

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

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

m2B

2021/01/06 12:10

すいません自己解決のところにコードを載せました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問