Laravel Migration for Followers / Follow

时间:2016-07-20 16:34:06

标签: php laravel comments acl posts

我正在为用户关注者设置迁移。我想用它来检查用户是否关注了另一个用户,以及他是否能够查看和评论发布者帖子。

我基于这个例子这样做:

example

我写了这个:

class CreateFollowersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('followers', function (Blueprint $table) {

            $table->unsignedInteger('publisher_id')->nullable()->unsigned();
            $table->unsignedInteger('follower_id')->nullable()->unsigned();
            $table->boolean('enable_follow')->default('1')->unsigned();
            $table->timestamps();

            $table->foreign('publisher_id')
                ->references('id')
                ->on('users')
                ->onDelete('cascade');

            $table->foreign('follower_id')
                ->references('id')
                ->on('users')
                ->onDelete('cascade');

        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        schema::drop('followers');
    }
}

此表的使用应如下:

1)用户可以(点击)关注发布者,因此根据表格成为关注者。示例Publisher_id = 1; Follower_id = 2; enable_follow = 1; ID为2的用户现在关注用户ID 1,并且可以在Feed中查看该用户在Feed 上的帖子。当enable_follow设置为1

时,用户可以查看帖子并对这些帖子发表评论

2)发布商可以禁止用户查看或评论他的帖子,例如Publisher_id = 1; Follower_id = 2; enable_follow = 0;

问题:哪些用户可以看到(搜索帖子后,而不是搜索)并评论其他用户帖子? 答:每个用户除非发布者在收到不需要的评论后决定禁止发布不受欢迎评论的用户。

在评论之前,两个用户之间的关注者表中根本没有任何关系。该关系是在发布者禁止用户之后创建的,并且类似于示例编号2 Publisher_id = 1; Follower_id = 2; enable_follow = 0;

所以基本上'follower_id'真的是作为追随者和评论者。

1 个答案:

答案 0 :(得分:0)

我想说这个架构应该能够处理你正在寻找的功能。

我唯一不理解的是可以为空的外键。我不确定是否有必要使它们可以为空或者如果一个为空则意味着什么。它也可能不会让它们变得可空,或者它是否有可能。