为了账号安全,请及时绑定邮箱和手机立即绑定

如果没有给出预期的结果 - laravel

如果没有给出预期的结果 - laravel

PHP
倚天杖 2021-11-05 16:02:39
我有一个通知表,其中每一行都会向用户显示不同的通知。我试图做的部分是,如果连续值为 1,则显示一个句子,而如果值为 2,则显示另一个句子。如果我有 2 行,其中一个有 1 而另一个有 2 ,则显示两行。知道为什么下面的代码总是给出“数字 1”的输出,尽管表中有“数字 2”值? @foreach(auth()->user()->notifics as $notification) @if(Auth::user()->notifics()->where('data_type', 1)->first()->exists())        <a href="#"> number 1</a>@elseif(Auth::user()->notifics()->where('data_type', 2)->first()->exists())        <a href="#"> number 2</a>@endif@endforeach
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

这个答案是根据反馈更新的。代码应该是:


@foreach(auth()->user()->notifics as $notification)


@if($notification->data_type==1)

        <a href="#"> number 1</a>

@elseif($notification->data_type==2)

        <a href="#"> number 2</a>

@endif


@endforeach

当您尝试遍历用户的通知时,在每个循环中,您应该使用 直接检查通知的属性$notification->data_type。


在您之前的代码中,您不断检查用户是否在每个循环中都有某种通知。因此,如果用户具有两种类型的通知并且他有 2 条通知记录,它将显示它们两次。我很高兴这有帮助,干杯!


查看完整回答
反对 回复 2021-11-05
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

你只需要改变你的 if 语句。不要让你的代码复杂。有时代码实际上比我们期望的更容易:p


$notification->data_type==1


$notification->data_type==2

您只需要直接通过 if 和 ifelse 语句中的这些更改直接访问属性。


查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信