2016-07-20 11 views
0

Я настраиваю миграцию для пользователей. Я хочу использовать это, чтобы проверить, соответствует ли пользователь другому пользователю, и если он включен, чтобы видеть и комментировать записи издателя.Laravel Migration for Followers/follow

Я делаю это основано на этом примере:

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 теперь следует за идентификатором пользователя 1 и может видеть сообщения этого пользователя на фиде, например, в твиттере. Пользователь имеет возможность просмотреть сообщения и комментировать эти должности, как 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» действительно действует как как следящий, так и комментатор.

+0

Хорошо, что имеет смысл. Вам нужна запись в таблице 'followers', чтобы записи издателя могли отображаться в фиде пользователей. Пользователь все равно может найти любого издателя/сообщения, на которых он в настоящее время не «подписался». – user3158900

ответ

0

Я бы сказал, что эта схема должна быть способна обрабатывать функциональность, которую вы ищете.

Единственное, что я не понимаю, это обнуляемые внешние ключи. Я не уверен, что необходимо, чтобы они были обнуляемы или что это означало бы, если бы он был нулевым. Это также, вероятно, не повредило бы, если бы они были недействительными или если бы это было возможно.

+0

Как вы проверяете, запрещен ли пользователь оставлять комментарии или просматривать публикации издателя, если вы отбрасываете bool? Идея состоит в том, что любой пользователь может комментировать или видеть другой пользовательский пост, если он не запрещен. Если пользователь следует издателю, он увидит сообщения в своем фиде (например, Twitter). – Chriz74

+0

Подождите, я вижу, что вы предлагаете. Создавая таблицу «ignores», follower_id, связанная с publisher_id, не может видеть или комментировать сообщения, но дело в том, что мне нужна таблица для двух целей: 1) пользователь может следовать за издателем и видеть записи издателя в feed 2) пользователь может комментировать записи издателя независимо от его «следующего» статуса. Поэтому мне нужно «enable_follow», чтобы издатель запретил подписчику. – Chriz74

+0

Думаю, вы должны уточнить свой вопрос, возможно, точно, что вы хотите. Что определяет, может ли пользователь просматривать сообщение другого пользователя и что определяет, может ли пользователь прокомментировать сообщение другого пользователя, а также удалить вещи, которые противоречат друг другу. – user3158900

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