2017-03-15 7 views
1

Je construis un petit projet en utilisant le paquet Getstream Laravel. Cependant, j'ai un problème en essayant d'afficher des notifications pour les nouveaux abonnés. Je reçois un jeu de résultats vide lorsque j'appelle \FeedManager::getNotificationFeed($request->user()->id)->getActivities() dans une méthode de contrôleur. J'ai mon modèle follow qui ressemble à ceci:J'ai des problèmes pour obtenir le flux de notification pour les nouvelles suivantes lors de l'utilisation de stream-laravel

class Follow extends Model 
{ 
    protected $fillable = ['target_id']; 

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

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

    public function activityNotify() 
    { 
     $targetFeed = \FeedManager::getNotificationFeed($this->target->id); 
     return array($targetFeed); 
    } 
} 

Ensuite, l'action du contrôleur pour obtenir les notifications de nouveaux suit ressemble à ceci:

public function notification(Request $request) 
{ 
    $feed = \FeedManager::getNotificationFeed($request->user()->id); 
    dd($feed->getActivities()); 
    $activities = $feed->getActivities(0,25)['results']; 


    return view('feed.notifications', [ 
     'activities' => $activities, 
    ]); 
} 

Dans le modèle de l'utilisateur que je l'ai défini une relation qu'un utilisateur a beaucoup suit. Et enfin le suivi et les actions dans le unfollow regard FollowController comme ceci:

public function follow(Request $request) 
{ 
    // Create a new follow instance for the authenticated user 
    // This target_id will come from a hidden field input after clicking the 
    // follow button 
    $request->user()->follows()->create([ 
     'target_id' => $request->target_id, 
    ]); 

    \FeedManager::followUser($request->user()->id, $request->target_id); 

    return redirect()->back(); 
} 

public function unfollow($user_id, Request $request) 
{ 
    $follow = $request->user()->follows()->where('target_id', $user_id)->first(); 

    \FeedManager::unfollowUser($request->user()->id, $follow->target_id); 

    $follow->delete(); 

    return redirect()->back(); 
} 

Je ne sais pas s'il y a quelque chose que j'omis, mais je ne peux pas obtenir des résultats pour l'alimentation de notification. Si je me rends à l'onglet Explorateur du tableau de bord Stream, je peux voir que j'ai obtenu deux nouveaux suivis qui ont généré à la fois le scénario et le type de flux agrégé. Ou comment puis-je obtenir le flux de notification à partir d'une action du contrôleur? Merci d'avance

Répondre

0

La méthode \FeedManager::followUser crée deux relations: chronologie à l'utilisateur et chronologie agrégée à l'utilisateur.

Dans ce cas, que voulez-vous créer une relation de suivi entre la notification et l'utilisateur. Quelque chose comme ça devrait le faire:

\FeedManager:: getNotificationFeed($request->user()->id) 
    .followFeed('user', $follow->target_id) 
+0

Merci de votre retour. Ok, j'ai essayé cette approche mais si je définis 'notification' comme le slug de cible, j'obtiens une erreur: {" target ": [" Vous ne pouvez suivre que des feeds plats, pas des feeds de type notification "]}. Aussi juste pour m'assurer que je suis sur le bon chemin, la ligne de code pour établir la relation de suivi va à l'intérieur de la méthode de suivi dans le contrôleur droit? –

+0

@ChristopherVundi désolé j'ai écrit la demande le chemin –

+0

Hey mis à jour la ligne de code que vous avez partagé. Placé à l'intérieur de la méthode 'follow' dans' FollowController'. Mais appeler '\ FeedManager :: getNotificationFeed ($ request-> utilisateur() -> id) -> getActivities()' de la méthode 'notification' dans' FeedsController' ramène un ensemble de résultats vide. Y a-t-il quelque chose que je puisse faire de mal? Mon code est exactement comme ci-dessus. –