2016-08-18 4 views
0

Я хочу, чтобы пользователь в системе мог перейти на другие страницы профиля пользователя, где отображаются все его сообщения и другие материалы.Навигация к профилю пользователя (laravel 5.2)

то, что я пытался приведен ниже:

мой маршрут:

Route::get('/myplace/{username}' , [ 

     'uses' => '[email protected]' , 

     'as' => 'myplace' , 

     'middleware' => 'auth:web' 

]); 

PostController:

public function getmyplace($username) 
{ 
    $user = User::where('username', $username)->first(); 
    if(!$user) 
     abort(404); 

    $posts=Post::where(function($query){ 
     $query->where('user_id',Auth::user()->id) 
      ->orWhereIn('user_id',Auth::user()->friends()->lists('id') 
       ); 
    }) 
    ->orderBy('created_at','desc')->get(); 

    $accounts=Account::orderBy('updated_at','desc')->limit(1)->get(); 

    return view('myplace',['user'=>$user,'posts'=>$posts,'accounts'=>$accounts]); 
} 

мой взгляд:

> @if (!$posts->count()) 
>   <p>{{$user->getNameOrUsername() }} hasn't posted anything, yet.</p> 
>  @else 
>   @foreach ($posts as $post) 
>   @if(Auth::user()== $post->user) 
> 
> <div class="panel panel-default"> 
>  <div class="panel-heading"> 
>  <div class="row"> 
>   <section class="col-md-2 col-xs-2"> <img id="imagesize2" src="images/g.jpg" class="img-circle" data-action="zoom"/></img> 
> </section> <section class="col-md-5 col-xs-offset-1 col-xs-5"> 
> <a id="alink13" href=""><h5 
> id="alink14">{{$post->user->getNameOrUsername() }}</h5></a> 
>  <p> on {{$post->created_at}} </p> </section> 
>  </div> 
>  <div class="panel-content"> 
>  <div class="row" id="fetch"> 
>  <section class="col-md-12" data-postid="{{ $post->id }}"> 
>  <p id="post">{{$post->body}}</p> 
>  <div class="interaction" > 
>  @if(Auth::user()==$post->user) 
>  <a href="" class="edit">Edit</a> 
>  <a id="remove2" href="{{route('post.delete',['post_id' => $post->id])}}">Delete</a> 
>  @endif 
>  </div> 
>   </section> 
>  </div> 
>  </div> 

Я передал параметр имя пользователя, но что 't дал желаемый результат.

Все, что мне нужно предоставить, просто скажите мне.

+0

какая ошибка вы получаете? что вы хотели получить и что вы получаете? –

+0

@AmirBar Я хочу, чтобы, когда я перешел в чей-то профиль, отображается содержимое (здесь сообщения) этого пользователя. то, что я получаю, -> содержимое зарегистрированного пользователя –

ответ

1

Ваша проблема здесь

$query->where('user_id',Auth::user()->id) 
     ->orWhereIn('user_id',Auth::user()->friends()->lists('id') 
      ); 

Ваш запрос выбирает данные для Auth :: пользователя() вместо $ пользователя

$posts=Post::where(function($query) use ($user) { 
    $query->where('user_id',$user->id) 
     ->orWhereIn('user_id',$user->friends()->lists('id') 
      ); 
}) 
->orderBy('created_at','desc')->get(); 

EDIT добавить использование ($ пользователя) когда объявление анонимной функции

Также вы можете удалить запрос, если у вас установлена ​​красноречивая ссылка ионов.

$posts = $user->posts; // example 

EDIT 2 удалить

@if(Auth::user()== $post->user) 

Вы выбираете сообщения (в контроллере), что DONT belongt к вам. Поэтому не проверяйте, что они принадлежат вам в представлении.

EDIT 3

Для получения дополнительной информации посмотрите в обсуждение. Текущее состояние - это то, что в таблице сообщений требуется другая ссылка на пользователя. Эта ссылка определяет, на чьем «профиле» пост, который был сделан. Поэтому его можно было бы назвать target_id и ссылаться на идентификатор в таблице пользователей.

На следующем этапе маршрут должен быть изменен так, чтобы пропускался идентификатор пользователя (также может быть передан в теле запроса), например.

/user/{id}/profile 

Контроллер затем принимает переданный параметр $ Id как target_id и текущий пользователь (Авт :: пользователя()) в качестве user_id (создатель поста)

Наконец, запрос может быть выполнен на самом деле выберите каждый пост пользователя сам + каждый пост, где он является целевой

$posts=Post::where(function($query) use ($user) { 
    $query->where('user_id',$user->id) 
     ->orWhere('target_id',$user->id); 
}) 
->orderBy('created_at','desc')->get(); 

Ofcourse за $ пользователю необходимо выбрать в различных requets и маршрутизации и внутренние перенаправления должны быть адаптированы в отношении изменений.

+0

теперь получение ошибки: неопределенная переменная: user –

+0

О, это из-за анонимной функции просто добавляет функцию «use ($ user)» к функции, я обновляю свой ответ в второй | Добавлено –

+0

sry, но это не решило мою проблему ..... –

Смежные вопросы