首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将动态集合数合并在一起

将动态集合数合并在一起
EN

Stack Overflow用户
提问于 2015-12-03 02:20:19
回答 2查看 217关注 0票数 0

我正在做我的第一个拉拉项目:家谱。我有4个家庭分支,每个分支都有人物/家庭/图片/故事等。网站上的一个用户将可以访问这些家族中的1、2或4个分支的所有东西(我不想为他们不相关的人展示表亲的东西)。

因此,在各种页面上,我希望控制器的集合包含基于给定用户权限的内容。合并似乎是正确的方法。

我有一个范围,可以从家庭的每个分支中得到人们,在下面的例子中,我也为这个月过生日的人提供了一个范围。为了给这个用户显示正确的生日集,如果每个组都有访问权限,我可以通过合并每个组来获得它。

如果我向所有4个家庭分支中的每个人展示我的功能,如下所示:

代码语言:javascript
运行
复制
public function get_birthday_people()
{
    $user =  \Auth::user();

    $jones_birthdays = Person::birthdays()->jones()->get();
    $smith_birthdays = Person::birthdays()->smith()->get();
    $lee_birthdays = Person::birthdays()->lee()->get();
    $brandt_birthdays = Person::birthdays()->brandt()->get();

    $birthday_people  = $jones_birthdays 
        ->merge($smith_birthdays)
        ->merge($lee_birthdays )
        ->merge($brandt_birthdays );

    return $birthday_people;

我的挑战:我想修改它,这样我就可以检查用户的访问权限,并且只相应地添加每一组人。我想象的东西和上面一样,只是添加了这样的条件:

代码语言:javascript
运行
复制
        if($user->jones_access) {
$jones_birthdays = Person::birthdays()->jones()->get();
}
     else{
$jones_birthdays =NULL;
}

但是对于没有访问权限的用户,这会引发一个错误,因为我无法在NULL上调用merge (或者一个空数组,或者我尝试过的其他版本的“nothing”)。

这样做的好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-03 04:16:37

代码语言:javascript
运行
复制
if($user->jones_access) {
   $jones_birthdays = Person::birthdays()->jones()->get();
}
else{
   $jones_birthdays = new Collection;
}

更好的是,在这种情况下进行合并,而不需要其他条件。

代码语言:javascript
运行
复制
$birthday_people = new Collection;
if($user->jones_access) {
   $birthday_people->merge(Person::birthdays()->jones()->get());
}
票数 2
EN

Stack Overflow用户

发布于 2015-12-03 04:25:55

您将希望您的雄辩查询只为请求它的用户返回相关数据。当琼斯的人访问这个页面时,询问李的生日是没有意义的。

所以你最后要做的是

$birthdays = App\Person::where('family', $user->family)->get();

这吸引了一些人,他们的family属性等于当前用户的家族。

这可能与你现在的关系方式不匹配,但希望它能让你走上正确的轨道,把它们理顺。

如果您真的想继续进行大量查询和检查授权,请阅读Laravel的授权特性。它会让你分配能力给用户,并检查他们容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34056745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档