2016-02-26 5 views
1

Я хочу, если пользователь дал свой голос за определенную должность. И я хочу использовать это, где предложение как-то выглядит. Есть ли возможность?Laravel 5.2 как написать это где предложение в поле зрения?

$used = Vote::where('post_id', $id) 
      ->where('user_id', Auth::user()->id) 
      ->first(); 

Могу ли я написать это как-то лезвие с помощью @if?

EDT

Когда я делаю это:

User model:

public function vote() 
{ 
    return $this->hasMany('App\Vote'); 
} 

public function voted($postId) 
{ 
    return $this->vote()->where('post_id', $postId)->count() > 0; 
} 

PostsController:

return view('index', compact('posts'))->with('user', Auth::user()); 

И на мой взгляд:

@if ($user->voted($postId)) 
      // some button 
    @endif 

я получаю: Undefined variable: postId

Это мой маршрут:

Route::get('/', '[email protected]');

+0

В каком файле вы получаете ошибку «неопределенная переменная»? В модели View или i? – Kocik

+0

@Kocik Index.blade.php – hulkatron

+0

И в этой строке: '@if ($ user-> voted ($ postId))' - откуда вы получаете '$ postId'? Мне нужен какой-то контекст. – Kocik

ответ

0

Не использовать запросы непосредственно в окне просмотра. Как насчет определения метода на модели User для этой цели. В приведенном ниже решении предполагается, что у вас есть отношение к указанным вами пользователям голосов User.

Таким образом, вы должны иметь это в вашей User модели:

public function votes() 
{ 
    return $this->hasMany(App\Votes::class); 
} 

public function voted($postId) 
{ 
    return $this->votes()->where('post_id', $postId)->count() > 0; 
} 

Затем в закрытии маршрута или действия контроллера можно вернуть:

return view('yourview')->with('user', Auth::user()); 

Или просто использовать View Sharing так вы не должны проходить аутентифицированный пользователь на просмотр каждый раз:

view()->share('user', Auth::user()); 

И тогда ваш взгляд файл клинка вы можете просто написать следующее:

@if ($user->voted($postId)) 
    <!-- Do your stuff --> 
@endif 
0
@if ($user->voted($postId)) // in this place you need $postId defined 
     // some button 
@endif 

Для этого вам нужно либо бросить $ сообщения дан в viewbag

return view('yourview') 
    ->with('user', Auth::user()) 
    ->with('postId', $currentPostId); //change $currentPostId to your 
             //variable, probably like: $post->id 

Или если вы выполняете итерацию по всем сообщениям, вам необходимо получить форму для публикации модели:

@for($posts as $post) 
    //... 
    @if ($user->voted($post->id)) 
     //... 
    @endif 
    //... 
@endfor 

Надеюсь, он отвечает на ваш вопрос;)

+0

Можете ли вы, пожалуйста, добавить меня в чат? Я расстраиваюсь этим. – hulkatron

+0

Если у вас все еще есть проблемы, отправьте ссылку на pastebin с вашим контроллером и файлами шаблонов, а также полное сообщение об ошибке, которое вы получаете. – Kocik

+0

http://pastebin.com/7BtVmbpv это. – hulkatron

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