структура системы подписки / отмены подписки - PullRequest
0 голосов
/ 05 июля 2019

Я создал приложение типа instagram с laravel, и у него есть система отслеживания / отмены подписки, например instagram. Я хочу скрыть кнопку «следовать», когда захожу в свой профиль, потому что мы не можем следить за собой в реальном приложении Instagram.

Я попытался получить идентификатор профиля и пользовательской таблицы и поставить условие: если они равны, кнопка скрывается.

Это модели:

Модель пользователя

    public function posts(){
        return $this->hasMany(Post::class)->orderBy('created_at' , 'DESC');    
    }

    public function following(){
        return $this->belongsToMany(Profile::class);
    }

    public function profile(){
        return $this->hasOne(Profile::class);
    }

Модель профиля

class Profile extends Model
{
    public function followers() {
        return $this->belongsToMany(User::class);
    }

    public function user() {
        return $this->belongsTo(User::class);
    }
}

FollowsController

class FollowsController extends Controller
{
    public function __construct(){
        $this->middleware('auth');
    }

    public function store(User $user){
        return auth()->user()->following()->toggle($user->profile);
    }
}

ProfileController: здесь я хотел получить идентификаторы профилей и идентификаторы пользователей из моделей и отправить их для просмотра через компакт, в то время как я хотел сопоставить эти значения и проверить, равны они или нет но идентификатор профиля возвращает "ноль", когда идентификатор умирает и сбрасывает его.

    public function index(User $user , Profile $profile)
    {
        $follows = (auth()->user()) ? auth()->user()->following->contains($user- >id) : false ;
        return view('profiles.index' , compact('user' ,'follows', 'profileId' , 
    'userId'));
    }

Это тег vue в индексном представлении, который показывает профиль, я просто хочу вставить в него условие v-if и остановить текущего пользователя, чтобы он следовал самому себе

     <follow-button my-user-id="{{ $user->id }}"  follows="{{ $follows }}" > 
    </follow-button>

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

1 Ответ

0 голосов
/ 05 июля 2019

Проблема с кодом ниже состоит в том, что вы никогда не определяете $profileId и $userId, поэтому они отправляются в виде null.

public function index(User $user , Profile $profile)
{
    $follows = (auth()->user()) ? auth()->user()->following->contains($user->id) : false;

    return view('profiles.index', compact('user', 'follows', 'profileId', 'userId'));
}

Я думаю, что выможет, вероятно, сделать что-то вроде этого:

public function index(User $user)
{
    $follows = auth()->user() ? auth()->user()->following->contains($user->id) : false;

    return view('profiles.index', compact('user', 'follows'));
}

И на ваш взгляд:

@if(auth()->check() && auth()->user()->id !== $user->id)
    <follow-button my-user-id="{{ $user->id }}"  follows="{{ $follows }}"></follow-button>
@endif

Приведенный выше код проверяет, если: - пользователь вошел в систему (если вы не вошли в системуя полагаю, что вы также не можете следить за кем-либо) - идентифицируемый в настоящее время идентификатор пользователя не совпадает с идентификатором $user (доступ к профилю), который теперь показывает кнопку, если аутентифицированный пользователь просматривает свой собственный профиль.

...