2017-01-17 7 views
0

私は現在PHPでニュースフィードアプリを開発しています。ユーザーには場所が割り当てられます。ユーザは、ユーザの位置が割り当てられた投稿を作成することができる。これまでのところ、場所に関係なくすべての投稿によってニュースフィードが作成されています。私が必要とするのは、投稿位置がユーザーの場所と一致する投稿でニュースフィードを埋め込むことです。PHP - ポストの場所が現在ログインしているユーザーの場所と一致する場合に投稿を取得する方法

私は、現在ログインしているユーザーの場所を同じ場所の投稿と一致させてから、ニュースフィードに入力します。このコードは機能しません。 何か助けが素晴らしいでしょう!

public function getDashboard($posts_location) 
    { 
$posts = Post::where('location', $posts_location); 

if(Auth::user()->location = $posts_location) { 
return view('dashboard', ['posts' => $posts]); 
    } 
+0

私はそれが投稿のタイプミスであるかどうか分かりませんが、等価性チェックの代わりに割り当てがあります。 'Auth :: user() - > location = $ posts_location' –

答えて

0

- > get()を忘れているようです。上記のコメントにGiacomo Cosimatoが述べたように、if文には等価チェックエラーがあります。

public function getDashboard($posts_location) 
{ 
    $posts = Post::where('location', $posts_location)->get(); 

    if(empty($posts->first()->id)) 
     return abort('404'); 

    if(Auth::user()->location == $posts_location) { 
      return view('dashboard', ['posts' => $posts]); 
    } 
} 

https://laravel.com/docs/5.3/errors#http-exceptions

+0

おかげさまで助けてくれてありがとう。あなたのコードを使用しましたが、このエラーが発生します:App \ Http \ Controllers \ PostController :: getDashboard()の引数1がありません。何か案は? – Patrick

+0

あなたのルート経由で$ post_locationsが到着するはずです。次のようなものがあります:Route :: get( '/ locations/{slug}'、 'C​​ontroller @ getDashboard'); "slug"は$ posts_locationとして送信される変数になります。したがって、訪問者がwww.yourwebsite.com/locations/albertaに行くと、$ posts_locationは "alberta"に等しくなります。 – MMMTroy

+0

ありがとうトロイ。だから、私のルートに$ post_locationsを追加する必要があります。それ以外にどこに追加する必要がありますか? – Patrick

0

あきれるほど、これは私が助けみんなのため

public function getDashboard() 
    { 
    $posts = Post::where('location', '=', Auth::user()->location) 
    ->orderBy('created_at', 'desc')->get(); 
     return view('dashboard', ['posts' => $posts]); 
    } 

感謝を必要なすべてのです!

関連する問題