Laravel中使用MailerLite PHP API V2取消订阅者分组的方法咨询
问题
在Laravel应用中使用mailerlite/mailerlite-api-v2-php-sdk时,遇到无法取消订阅者分组的问题:
- 可正常创建订阅者并分配分组:
$this->mailerLite = new \MailerLiteApi\MailerLite(env('MAILERLITE_API_KEY')); // 创建新订阅者 $subscribersApi = $this->mailerLite->subscribers(); $newSubscriber = $subscribersApi->create([ 'email' => trim($request['email']), 'fields' => [ 'name' => trim($request['firstName']), 'last_name' => trim($request['secondName']) ], 'groups' => [ 'firstgroupID' ] ]); Log::info('newSubscriber: ' . json_encode($newSubscriber));
- 使用
create方法更新订阅者分组时,该方法为非破坏性操作,仅添加新分组,不会移除原有分组:
$subscribersApi = $this->mailerLite->subscribers(); $updateSubscriber = $subscribersApi->create([ 'email' => $user->email, 'fields' => [ 'name' => $user->forename, 'last_name' => $user->surname ], 'groups' => [ 'newGroupID' ] ]); Log::info('updateSubscriber: ' . json_encode($updateSubscriber));
- 尝试通过
Groups::unAssignSubscriber()方法移除分组时触发错误:
$subscriberId = $updateSubscriber->id; $groupsApi = $this->mailerLite->groups(); $unassignSubscriber = $groupsApi->unAssignSubscriber('GROUP-ID-TO-BE-REMOVED',$subscriberId); Log::info('unassignSubscriber: ' . json_encode($unassignSubscriber));
错误信息:
local.ERROR: Error: Call to undefined method MailerLiteApi\Api\Groups::unAssignSubscriber() in /app/app/Http/Controllers/MailerliteController.php:66
需明确在MailerLite PHP API V2中如何实现移除订阅者的分组。
解决方案
在MailerLite PHP API V2中,移除订阅者分组有两种可行方式:
方法一:通过订阅者API替换所有分组
使用subscribers()的update方法,传入订阅者ID和需要保留的分组ID数组——数组中未包含的原有分组会被自动移除:
$subscriberId = $updateSubscriber->id; $subscribersApi = $this->mailerLite->subscribers(); // 仅保留需要的分组,排除要移除的目标分组 $updateResult = $subscribersApi->update($subscriberId, [ 'groups' => [ '保留的分组ID1', '保留的分组ID2' ] ]); Log::info('updateResult: ' . json_encode($updateResult));
方法二:通过分组API移除单个订阅者
Groups类提供了removeSubscriber方法(你之前误写为unAssignSubscriber),可直接从指定分组中移除订阅者:
$subscriberId = $updateSubscriber->id; $groupsApi = $this->mailerLite->groups(); // 参数顺序:分组ID,订阅者ID $unassignResult = $groupsApi->removeSubscriber('要移除的分组ID', $subscriberId); Log::info('unassignResult: ' . json_encode($unassignResult));
内容的提问来源于stack exchange,提问作者N.Widds
相关产品推荐
相关产品推荐

