如何获得Laravel 5中文章的user_id?

时间:2015-09-03 22:23:02

标签: php mysql laravel laravel-5 laravel-5.1

所以我遵循L5基础知识,尝试改进事情,但它变得有点复杂,特别是你可以用许多不同的方式做同样的事情。我一直在忘记哪个是哪个。

我正在尝试检查用户试图编辑的文章是否属于他,如果没有,我会用信息重定向他。我将其应用于edit()

中的ArticlesController方法

我能够获得已登录用户的id,但我无法获得user_id中的articles,因此我可以对其进行比较。

这是我到目前为止所做的,因为你可以看到它的评论,因为它不是我想要的结果,这是我最接近它的任何东西。

我还应该在控制器或视图上实现这个条件吗?为什么?

public function edit(Article $article) {
    $user = Auth::id();
    //$articleUserId = $article->user()->getResults();
    dd($user);

    if($user) {
        $tags = Tag::lists('name', 'id');
        //$article = Article::findOrFail($id);

        return view('blog/edit')->with('article', $article)
            ->with('tags', $tags);
    } else {
        return 'you are not logged in';
    }
}

2 个答案:

答案 0 :(得分:1)

public function edit(Article $article) {
    if ( ! auth()->check()) {
        return 'you are not logged in';
    }

    if ($article->user_id != auth()->id()) {
        return 'This is not your article';
    }

    $tags = Tag::lists('name', 'id');

    return view('blog.edit')->with(compact('article', 'tags'));
}

我看到有人在owns模型中添加User方法:

public function owns(Model $model)
{
    return object_get($model, 'user_id') == $this->id;
}

然后在您看来,您可以查看它:

@if (auth()->user()->owns($article))
   // show whatever...
@endif

答案 1 :(得分:1)

我想在你的问题中发表评论,但我没有足够的声誉,所以我会发布另一个答案..

  

感谢。它完成了这项工作。但是现在的问题是,我该如何隐藏   "编辑"如果文章的用户ID不相同,则链接在视图上   作为登录用户的用户ID? - Halnex 8小时前

基于Joseph Silber

的回答

在你看来..

@foreach($article as $value)
 @if($article->user_id == Auth::id())
   //SHOW EDIT BUTTON
 @endif
@endforeach