Laravel getStream - 如何关注或添加 activity 公司(非用户)

Laravel getStream - How to follow or add activity to a Company (non user)

我正在创建的应用程序需要关注公司,而不是用户。并让公司有自己的活动。 Laravel getStream 中是如何配置的。似乎提要仅适用于用户类型。

timelineFeed = FeedManager::getNewsFeed($user->id)['timeline'];
$aggregatedTimelineFeed = FeedManager::getNewsFeed($user->id)['timeline_aggregated'];

我的样品模型是这样的:

namespace App;

use Illuminate\Database\Eloquent\Model;

class CompanyPost extends Model
{
    use \GetStream\StreamLaravel\Eloquent\ActivityTrait;

    public function company()
    {
        return $this->belongsTo('App\Company', 'company_id', 'id');
    }

    public function activityVerb()
    {
        return 'company_post';
    }

    public function activityActorMethodName()
    {
        return 'company';
    }
}

但我注意到提要仍然保存在用户活动而不是公司活动上。

在此先感谢大家。

我们的 stream-laravel 项目有一些关于如何更改模型的文档

class Pin extends Eloquent {
use GetStream\StreamLaravel\Eloquent\ActivityTrait;

public function author()
{
    return $this->belongsTo('Author');
}

public function activityActorMethodName()
{
    return 'author';
}

就让志愿者关注公司和用户而言,我们在主要 README 中有一些文档。

(编辑以删除我错误的 github 引用)

Ian 似乎在他 link 到 Github 问题中把你和我混淆了,这引起了我对这个 post 的注意。

这仍然出现在用户供稿中的原因是,这不是一个可配置的选项,至少在个案(或模型)层面上是这样。您可以覆盖 Stream Laravel 在主要配置中用作 "user feed" 的内容,但据我所知,除非您构建使用 Stream-PHP 库实现自己的功能,并避免使用 StreamLaravel Activity 特性。

您可以在此处查看从第 73 行开始的 StreamLaravelManager.php 创建 activity 时发生的情况。

public function activityCreated($instance)
{
    $activity = $instance->createActivity();
    $feed = $this->getFeed($this->userFeed, $instance->activityActorId());
    $feed->addActivity($activity);
} 

不幸的是,“$this->userFeed”最终是从配置文件中提取出来的,我认为没有办法覆盖它。

就我个人而言,我在创建 "like" 功能时 运行 参与其中。我真的不希望人们必须在他们的时间表上看到每个人 "likes" 的内容,因为其中大部分都是无关紧要的,而且很快就会变得混乱,所以我最终甚至没有创建 "like" [=31] =].相反,只有当有人喜欢他们的东西时,我才会将它添加到用户通知提要中。当然,这可能不是每个人都希望以这种方式处理的,但我注意到你的屏幕截图中有 "like" activity,所以我想我会提到它。

祝你的应用程序好运!

抱歉回复晚了。我已经设法关注一家公司创建 饲料组: 公司持平

并使用下面的示例代码:

$feed = FeedManager::getClient()->feed('timeline', $user->id);
$feed->followFeed('company', $companyId);

取消关注:

$feed->unfollowFeed('company', $companyId);

添加activity:

$companyFeed = FeedManager::getClient()->feed('company', $company->id);
$companyFeed->addActivity([
    "actor"      => "App\Company:{$company->id}",
    "verb"       => "company_post",
    "object"     => "App\CompanyPost:{$post->id}",
    "foreign_id" => "App\CompanyPost:{$post->id}"
]);