2017-03-15 2 views
1

Ich baue ein kleines Projekt mit Getstream Laravel-Paket. Ich habe jedoch ein Problem beim Anzeigen von Benachrichtigungen für neue Follower. Ich bekomme ein leeres Ergebnis, wenn ich \FeedManager::getNotificationFeed($request->user()->id)->getActivities() in einer Controller-Methode aufrufen. Ich habe meine follow Modell wie folgt aussehen:Probleme beim Abrufen des Benachrichtigungsfeeds für neue Folgen bei Verwendung von 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); 
    } 
} 

Dann wird die Controller-Aktion, um die Benachrichtigungen zu erhalten für neue wie folgt aussieht folgt:

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, 
    ]); 
} 

Im Benutzermodell habe ich eine Beziehung definiert, dass ein Benutzer hat viele Folgen. Und schließlich die folgen und unfollow Aktionen im FollowController sieht wie folgt aus:

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(); 
} 

Nicht sicher, ob es etwas, was ich ausgelassen, aber ich kann nicht Resultate für die Benachrichtigung-Feed erhalten. Wenn ich vom Dashboard aus zum Explorer-Tab gehe, sehe ich, dass ich zwei neue Follows bekommen habe, die sowohl den Timeline- als auch den timeline_aggregated Feedtyp generiert haben. Oder wie bekomme ich den Benachrichtigungs-Feed von einer Controller-Aktion? Vielen Dank im Voraus

Antwort

0

Die \FeedManager::followUser Methode erstellen eine zwei folgen Beziehungen: Zeitleiste zu Benutzer und timeline_aggregated zu Benutzer.

In diesem Fall möchten Sie eine Follow-Beziehung zwischen Benachrichtigung und Benutzer erstellen. So etwas sollte es tun:

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

Vielen Dank für Ihre Rückkehr. Ok, ich habe diesen Ansatz versucht, aber wenn ich 'notification' als Ziel Feed Slug gesetzt habe, erhalte ich einen Fehler: {" target ": [" Du kannst nur flachen Feeds folgen, nicht Feeds vom Typ Benachrichtigung "]}. Auch nur um sicherzustellen, dass ich auf dem richtigen Weg bin, geht die Codezeile, um die Folge-Beziehung zu etablieren, in die Follow-Methode im Controller richtig? –

+0

@ChristopherVundi Entschuldigung Ich schrieb die Anfrage den Weg herum –

+0

Hey aktualisiert die Codezeile, die Sie geteilt haben. Platzierte es innerhalb der Follow-Methode in der FollowController. Der Aufruf von '\ FeedManager :: getNotificationFeed ($ request-> user() -> id) -> getActivities()' von der 'notification' Methode innerhalb des' FeedsController' bringt jedoch eine leere Ergebnismenge zurück. Kann ich irgendetwas falsch machen? Mein Code ist genau wie oben. –

Verwandte Themen