Laravel
フォロ機能実装で
フォロー解除ボタンとフォローボタンの表示の切り替えをif文で行いたいです。
因み今やっていることは、Slistと同じように、$followlistをパラメータとしてviewに送って、
follows tableのfollow_id をさんしょうできるようにしたいです。しかし現状、
search画面に遷移すると以下のエラーが出てきます。
Trying to get property 'follow_id' of non-object (View: /Applications/MAMP/htdocs/dawnSNS/resources/views/users/search.blade.php)
画面表示のControllerでデータベースの値を送っているに認識されない原因がわかりません。
他にいい方法などあれば、何卒ご教授お願いします。
何卒ご教授お願いします。
Controller
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Auth; 7class FollowsController extends Controller 8{ 9 // 10 public function follow(Request $request) 11 { 12 13 $user_id = Auth::user()->id; 14 // dd($request); 15 $follower_id = $request->input('id'); 16 17 \DB::table('follows') 18 ->insert([ 19 'follower_id' => $user_id, 20 'follow_id' => $follower_id 21 ]); 22 return redirect('/search'); 23 } 24 public function remove(Request $request){ 25 26 $user_id = Auth::user()->id; 27 // dd($request); 28 $follower_id = $request->input('id'); 29 30 \DB::table('follows') 31 ->where(['follower_id' => $user_id, 32 'follow_id' => $follower_id 33 ])->delete(); 34 35 return redirect('/search'); 36 } 37 public function followList(){ 38 return view('follows.followList'); 39 } 40 public function followerList(){ 41 return view('follows.followerList'); 42 } 43} 44
View
php
1@extends('layouts.login') 2 3@section('content') 4{{Form::open(['action'=>'UsersController@result'])}} 5{{Form::text('keyword',null,['class' => 'input'])}} 6{{Form::submit('送信',['class' => 'search-button'])}} 7{{Form::close()}} 8 9<div class='container'> 10 <table class='table table-user'> 11 12@foreach ($list as $list) 13 14 <tr> 15 <td><img src="{{ asset('images/dawn.png')}}"alt = "dawn.png"><td> 16 <td>{{ $list->username }}</td> 17 {{-- @if($followlist->follow_id == $list->id) --}} 18 {{Form::open(['action' => 'FollowsController@follow'])}} 19 {{Form::hidden('id',$list->id)}} 20 <td>{{Form::submit('フォローをする',['class'=>'follow-user'])}}</td> 21 {{Form::close()}} 22 {{-- @endif --}} 23 {{-- @if() --}} 24 25 @foreach ($followlist as $followlist) 26 @if($followlist->follow_id == $list->id) 27 28 {{Form::open(['action' => 'FollowsController@remove'])}} 29 {{Form::hidden('id',$list->id)}} 30 <td>{{Form::submit('フォローを解除する',['class'=>'remove-follow'])}}</td> 31 {{Form::close()}} 32 33 @endif 34 @endforeach 35 36 37 38 </tr> 39 @endforeach 40 41 42 43@endsection
フォロー画面を表示しているコントローラー
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Auth; 7 8class UsersController extends Controller 9{ 10 // 11 public function profile(){ 12 $user_name = Auth::user()->username; 13 $email = Auth::user()->email; 14 $password = Auth::user()->password; 15 16 return view('users.profile'); 17 } 18 public function search(Request $request){ 19 20 21 $list = \DB::table('users')->get(); 22 $followlist = \DB::table('follows')->get(); 23 return view('users.search',(['list'=> $list,'followlist'=> $followlist])); 24 25 // $keyword = $request->input('keyword'); 26 } 27 28 public function result(Request $request){ 29 $keyword = $request->input('keyword'); 30 $list = \DB::table('users') 31 ->where('username','LIKE',"%{$keyword}%")->get(); 32 33 34 return view('users.search',['list'=> $list]); 35 } 36 37 } 38 39
回答1件
あなたの回答
tips
プレビュー