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

时间:2017-06-01 08:03:39

标签: laravel-5 getstream-io

我创建的应用需要关注公司,除了用户。让公司有自己的活动。如何在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';
    }
}

但我注意到Fee​​d仍然保存在用户活动而不是公司活动中。enter image description here

先谢谢你们。

3 个答案:

答案 0 :(得分:1)

我们的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参考)

答案 1 :(得分:1)

Ian似乎在与Github问题的链接中把我弄糊涂了,这引起了我的注意。

这仍然出现在用户Feed上的原因是,这不是一个可配置选项,至少在个案(或逐个模型)级别。您可以覆盖Stream Laravel用作"用户Feed"在主要配置中,但据我所知,除非您使用Stream-PHP库自行构建功能并且不使用StreamLaravel活动特征,否则将卡在活动登录用户的订阅源中。

你可以在这里看到StreamLaravelManager.php的第73行:创建活动时发生了什么。

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

很遗憾" $ this-> userFeed"最终是从配置文件中提取的,我不认为有办法覆盖它。

就个人而言,我在创建"喜欢"时遇到了这个问题。功能。我真的不希望别人看到每个人都喜欢什么"在他们的时间表上,因为大部分内容都是无关紧要的,而且它会很快变得杂乱无章,所以我最终甚至都没有创建一个"喜欢"活动。相反,当有人喜欢他们的某些内容时,我只会将其添加到用户通知Feed中。当然,对于每个人来说,这可能并不适合处理它,但我注意到你有"喜欢"你的截图中的活动让我想起来了。

祝你的应用好运!

答案 2 :(得分:0)

抱歉迟到了。我设法跟随公司创建 饲料组: 公司持续

以及下面的使用示例代码:

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

取消关注:

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

添加活动:

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