【发布时间】:2021-02-13 17:39:30
【问题描述】:
我正在尝试使用 Laravel Jetstream Teams 进行自动注册。由于 Jetstreams 需要“个人团队”,而我的应用程序要求用户与特定团队分开,我找到了一种解决方法,将 attach 一个用户加入一个团队,然后 switchTeam 让他们当前的团队像他们的个人一样加载团队会。
为此,我禁用了手动注册,禁用了创建新团队的功能并禁用了人们离开团队的功能。这节省了将个人团队从 Jetsteam 中移除的时间。
在执行此操作时,由于应用程序会自动创建用户(从电子表格),因此我还需要将团队分配给该用户。我正在尝试遍历每个Team::all,但响应是一个数组,因此我的array_filter 由于将对象作为参数给出而返回错误。
protected function assignTeam(User $user)
{
$team = array_filter(Team::all(), function(Team $team) {
// teamToAssign dervies from Spreadsheet data
return strtoupper($team->name) === strtoupper($this->teamToAssign);
});
if(!empty($team)) // User error can exist in data
{
Team::find($team->id)->users()->attach($user, ['role' => 'participant']);
User::find($user->id)->switchTeam(Team::find($team->id));
return;
}
// TODO: Deal with user error
}
任何人都可以阐明我如何解决这个问题吗?我是 Laravel 的新手,不确定是否有更好的方法来循环 Eloquent Collections。非常感谢。
【问题讨论】:
-
试试 Laravel Collections
filter方法怎么样。此外,可能还想使用first()方法来只获得一个结果
标签: php laravel collections eloquent