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