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

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

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

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

PHP

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

Q&A

1回答

1342閲覧

ログインユーザーつぶやき及びフォローしているユーザーのつぶやきを表示しようとしているが、エラーとなってしまう。

takumi_0827

総合スコア0

Laravel

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

PHP

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

0グッド

0クリップ

投稿2021/06/06 07:14

編集2021/06/06 08:15

前提・実現したいこと

ログインユーザーつぶやき及びフォローしているユーザーのつぶやきを表示したい。

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

下記のとおりです。
イメージ説明

該当のソースコード

routes/web.php

php

1Route::resource('top', 'PostsController', ['only' => ['index', 'create', 'store', 'show', 'edit', 'update', 'destroy']]);

app/Models/Post.php

php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Post extends Model 8{ 9 // 4.1 ログインユーザーのつぶやきを登録 10 public function postStore(Int $user_id, array $data) 11 { 12 $this->user_id = $user_id; 13 $this->posts = $data['posts']; 14 $this->save(); 15 16 return; 17 } 18 19 // 4.2.1 ログインユーザーのフォローのつぶやき表示を表示 20 public function getTimeLines(Int $user_id, array $follow_ids) 21 { 22 $follow_ids[] = $user_id; 23 return $this->whereIn('user_id', $follow_ids)->orderBy('created_at', 'DESC')->paginate(50); 24 } 25}

app/Models/Follow.php

php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Follow extends Model 8{ 9 // 3.3 サイドバー/フォロー,フォロワー数の表示 10 public function getFollowCount($user_id) 11 { 12 return $this->where('follow', $user_id)->count(); 13 } 14 15 public function getFollowerCount($user_id) 16 { 17 return $this->where('follower', $user_id)->count(); 18 } 19 20 // 4.2.1 ログインユーザーのフォローのつぶやき表示を表示 21 public function followingIds(Int $user_id) 22 { 23 return $this->where('follow', $user_id)->get('follow'); 24 } 25}

app/Http/Controllers/PostsController.php

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Illuminate\Support\Facades\Validator; 7use App\User; 8use App\Post; 9use App\Follow; 10 11class PostsController extends Controller 12{ 13 // 3.3 サイドバー/フォロー,フォロワー数の表示 14 // 4.2.1 ログインユーザーのフォローのつぶやき表示を表示 15 public function index(User $user, Post $Post, Follow $follow) 16 { 17 $user = auth()->user(); 18 $follow_ids = $follow->followingIds($user->id); 19 $following_ids = $follow_ids->pluck('follower')->toArray(); 20 21 $timelines = $post > getTimelines($user->id, $following_ids); 22 23 $follow_count = $follow->getFollowCount($user->id); 24 $follower_count = $follow->getFollowerCount($user->id); 25 26 return view('posts.index', [ 27 'user' => $user, 28 'timelines' => $timelines, 29 'follow_count' => $follow_count, 30 'follower_count' => $follower_count, 31 ]); 32 } 33 34 // 4.1 ログインユーザーのつぶやきを登録 35 public function store(Request $request, Post $post) 36 { 37 $user = auth()->user(); 38 $data = $request->all(); 39 $validator = Validator::make($data, [ 40 'posts' => ['required', 'string', 'max:150'] 41 ]); 42 43 $validator->validate(); 44 $post->postStore($user->id, $data); 45 46 return redirect('top'); 47 } 48}

補足情報

・環境はLaravel Framework 5.5.48となります。
・「4.2.1 ログインユーザーのフォローのつぶやき表示を表示」の箇所が主に追加・修正した箇所になります。
・参考にしたサイトはこちらです。
以上となります。
初心者ですが、どうぞよろしくお願いします。

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

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

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

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

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

m.ts10806

2021/06/06 07:50 編集

画像は外部サイトではなく、teratailの画像投稿機能を利用してください。 また、リンクもマークダウンのリンク機能を利用して提示してください。 (質問は編集できます)
m.ts10806

2021/06/06 07:53

また、「補足情報」には環境情報を入れられたほうが良いです。 バージョンによりそれなりに差はありますし、現時点で最新であったとしてもしばらくすれば最新ではなくなります(数か月単位でバージョンアップが決まってるツールとかもありますし)
takumi_0827

2021/06/06 08:16

コメントありがとうございます。 修正をしておきました。 よろしくお願いします。
m.ts10806

2021/06/06 09:40

ご自身の環境が5.5で記事が前提とするバージョンが5.8のようなので、参考にはできないかと。 自身のバージョンにあわせてドキュメント確認されたほうが良いでしょう。 https://readouble.com/ マイナーバージョンレベルで記事がわかれているということは、それだけ差異があるとも言えます。
takumi_0827

2021/06/06 09:51

かしこまりました。 会社の教育担当の方に確認してみます。
m.ts10806

2021/06/06 09:54

会社の課題か何かですか。 それなら自身で解決しないといけないでしょうね。 教育担当の意図せぬ方向にいってはいけませんし、 どのように解決できたか、理解したほどを説明できないといけません。 それにやり取り見てるとLaravel に手を出す前にもっとPHPやWebの基本的なところをおさえないといけないように見えます。 いきなりフレームワークから手を出せる程Laravelは学習コスト低くないですし、前提となる知識や技術の敷居は高いです。
takumi_0827

2021/06/06 09:58

ご教示ありがとうございます。 引き続き頑張っていこうと思います。
guest

回答1

0

before

1return $this->where('follow', $user_id)->get('follow');

after

1return $this->where('follow', $user_id)->get(['follow']);

投稿2021/06/06 08:17

編集2021/06/06 10:15
mikkame

総合スコア5036

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

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

takumi_0827

2021/06/06 08:20

ご回答ありがとうございます。 こちらはどういったことか教えて頂けると幸いです。
mikkame

2021/06/06 08:25

とりあえず出ているエラーを解消できます
takumi_0827

2021/06/06 09:09

コメントありがとうございます。 上記コードをどちらに入れるか教えて頂けると幸いです...!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問