如何使用actualmab \ laravel-comment评论系统?

时间:2018-03-20 15:23:54

标签: laravel

我是Laravel的新手,我试图在某些帖子上实施评论系统。我找到了一个似乎得到很好支持的软件包,我认为通过使用它可以节省一些时间,而不是从头开始。

包装在这里: https://github.com/actuallymab/laravel-comment

有一些使用细节,但对于我这个级别的人来说,它们似乎不够清晰。

我在哪里:

完成作曲家

完成迁移

在我的"用户"型号:

use Actuallymab\LaravelComment\CanComment;

在我的" Post"模型:

use Actuallymab\LaravelComment\Commentable;


class Posts extends Model { 
  use Commentable;
  protected $canBeRated = true;
  //etc
} 

在我的PostsController中,我有:

public function comment()
{
  $userid = Auth::id();
  $postid = "1"; //static post id for testing

  $user = User::where('id','=',$userid);
  $post = Post::where('id','=',$postid)->first();

  $user->comment($post, 'Lorem ipsum ..', 3); // static comment for testing
}

最后,我的posts.blade:

<form action="{{ route('posts.comment') }}" method="POST">
    {{ csrf_field() }}
    <input type="text" id="commentdata"/> //not using this yet
    <div class="form-group">
        <input type="submit" class="btn btn-primary" value="Publish" />
        <a class="btn btn-primary" href="{{ route('posts.comment') }}">Cancel</a>
    </div>

不幸的是,当我点击提交按钮时,我得到了:

&#34;调用未定义的方法Illuminate \ Database \ Query \ Builder :: comment()&#34;

所以我似乎需要在User模型中定义一个函数?我不知道该怎么做。我希望以前有人使用过这个包。

更新1:

我现在正在使用以下PostsController代码:

public function comment()
{
  $userid = "1"; //static user id for testing
  $postid = "1"; //static post id for testing

  $user = User::find($userid);
  $post = Post::where('id','=',$postid)->first();

  $user->comment($post, 'Lorem ipsum ..', 3); // static comment for testing
}

错误仍然是&#34;调用未定义的方法Illuminate \ Database \ Query \ Builder :: comment()&#34;

1 个答案:

答案 0 :(得分:1)

  

调用未定义的方法Illuminate \ Database \ Query \ Builder

当您收到此错误时,您几乎可以肯定,因为您错过了一个步骤:您在查询构建器上调用方法而不是模型。您需要从查询中检索模型。

这是您当前的代码:

$user = User::where('id','=',$userid);

您需要从结果中检索第一个模型,例如:

$user = User::where('id','=',$userid)->first();

虽然您可以通过使用接受主键并返回模型的find方法来改进这一点,例如:

$user = User::find($userid);

然后从那里开始准备创建评论:

$user = User::find($userid);
$user->comment($post, 'Lorem ipsum ..', 3);

使用特征的例子:

<?php 

namespace App;

use Actuallymab\LaravelComment\CanComment;

class User
{
    use CanComment;
}