ホームページ > バックエンド開発 > PHPチュートリアル > LaravelとStreamでソーシャルネットワークを構築しますか?簡単!

LaravelとStreamでソーシャルネットワークを構築しますか?簡単!

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-10 08:59:08
オリジナル
820 人が閲覧しました

この記事は、「フォロー」機能をStreamを使用してLaravelアプリケーションに追加することに関する以前のチュートリアルに基づいています。 この部分は、アクティビティ追跡のモデルの構成、ストリームのフィードタイプの探索、フィードの取得、およびビューでそれらをレンダリングすることに焦点を当てています。

Building a Social Network with Laravel and Stream? Easy!

重要な概念:

    Stream Laravel's ストリームはデータをFeedManagerアクティビティとして保存します(俳優、動詞、オブジェクト、時間、およびカスタムデータ)。
  • を使用してを使用し、それに応じてフィードを更新します
  • アクティビティは、表示される前に
  • FollowController FeedManagerを充実させ、生データをビューに優しい形式に変換します。
  • ストリームはさまざまなフィードタイプ(ニュース、通知)をサポートし、さまざまなアクティビティのカスタムテンプレートを許可します。
  • アクティビティデータ構造:
  • ストリームは、少なくとも俳優、動詞、オブジェクト、および時間を使用したアクティビティとしてデータを表します。 カスタムフィールドも許可されています

オブジェクト:モデルインスタンスへの参照。

俳優:
    アクティビティを作成するユーザーへの参照。
  • 動詞:
  • アクションを表す文字列(例えば、 'created')。
  • 例:
  • モデルの
  • を定義します:
フィードマネージャーの利用:

activityVerb Post

は、フィードの相互作用を簡素化します。
class Post extends Model
{
    // ... other code ...

    /**
     * Stream: Activity verb for post creation.
     */
    public function activityVerb()
    {
        return 'created';
    }
}
ログイン後にコピー
ログイン後にコピー

に設定されたファサードエイリアスからアクセスされます 事前に構成されたフィード:

FeedManager config/app.phpは、事前に構築されたフィードを提供します:ユーザー、ニュース、および通知。 この例では、主にニュースと通知フィードを使用しています。 他のフィードタイプの詳細については、

ここで

FeedManagerを使用して機能をフォロー/解除します:

FeedManager は、効率的なフォロー/アンフォローアクションに

を使用するように更新されます:

フィードの表示:

FollowController FeedManagera

は、フィードの検索とディスプレイを処理するために作成されます:
// app/Http/Controllers/FollowController.php

public function follow(User $user)
{
    if (!Auth::user()->isFollowing($user->id)) {
        Auth::user()->follows()->create(['target_id' => $user->id]);
        FeedManager::followUser(Auth::id(), $user->id);
        return back()->with('success', 'Now following ' . $user->name);
    } else {
        return back()->with('error', 'Already following this user.');
    }
}

public function unfollow(User $user)
{
    if (Auth::user()->isFollowing($user->id)) {
        $follow = Auth::user()->follows()->where('target_id', $user->id)->first();
        FeedManager::unfollowUser(Auth::id(), $follow->target_id);
        $follow->delete();
        return back()->with('success', 'Unfollowed ' . $user->name);
    } else {
        return back()->with('error', 'Not following this user.');
    }
}
ログイン後にコピー
ログイン後にコピー

メソッドは、ビューレンダリングのためにデータ変換を処理します。 このコントローラーアクションにアクセスするためにルートが定義されています

テンプレート:FeedsController

use GetStream\StreamLaravel\Enrich;

class FeedsController extends Controller
{
    // ... other code ...

    public function newsFeed(Request $request)
    {
        $feed = FeedManager::getNewsFeeds($request->user()->id)['timeline'];
        $activities = $feed->getActivities(0, 25)['results'];
        $activities = $this->enrich()->enrichActivities($activities);
        return view('feed.newsfeed', ['activities' => $activities]);
    }

    private function enrich()
    {
        return new Enrich;
    }

    // ... other methods ...
}
ログイン後にコピー

ビューは、個々のアクティビティをレンダリングするために部分的な(enrich)を使用して、濃縮されたアクティビティを繰り返します。 カスタムアクティビティの部分(たとえば、作成後の

)は、

ビューフォルダー内に作成されます。 部分:

class Post extends Model
{
    // ... other code ...

    /**
     * Stream: Activity verb for post creation.
     */
    public function activityVerb()
    {
        return 'created';
    }
}
ログイン後にコピー
ログイン後にコピー

通知フィード:

Followモデルは更新され、通知フィード処理が含まれています:

// app/Http/Controllers/FollowController.php

public function follow(User $user)
{
    if (!Auth::user()->isFollowing($user->id)) {
        Auth::user()->follows()->create(['target_id' => $user->id]);
        FeedManager::followUser(Auth::id(), $user->id);
        return back()->with('success', 'Now following ' . $user->name);
    } else {
        return back()->with('error', 'Already following this user.');
    }
}

public function unfollow(User $user)
{
    if (Auth::user()->isFollowing($user->id)) {
        $follow = Auth::user()->follows()->where('target_id', $user->id)->first();
        FeedManager::unfollowUser(Auth::id(), $follow->target_id);
        $follow->delete();
        return back()->with('success', 'Unfollowed ' . $user->name);
    } else {
        return back()->with('error', 'Not following this user.');
    }
}
ログイン後にコピー
ログイン後にコピー

通知フィード用に同様のコントローラーアクション、ルート、およびビュー(notifications.blade.php)が作成されます。 フォロー通知には、別の部分(notification_follow.blade.php)が使用されます

結論:

ストリームは、Laravelアプリケーションに堅牢なフィード機能を追加することを簡素化します。 チュートリアルでは、さまざまなアクティビティを追跡し、さまざまなフィードタイプを管理し、ビューで効率的にレンダリングする方法を示しています。 Streamの機能のさらなる調査が奨励されています

FAQ(わずかに再フォーマット):

FAQSセクションはよく書かれており、役立つ情報を提供します。 重要な変更は必要ありませんが、マイナーなフォーマット調整により、読みやすさが向上する可能性があります。 より良い視覚組織のために、番号付きリストまたは太字の重要な用語を使用することを検討してください。

以上がLaravelとStreamでソーシャルネットワークを構築しますか?簡単!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート