猿问

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

我有一个通知表,其中每一行都会向用户显示不同的通知。我试图做的部分是,如果连续值为 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


倚天杖
浏览 153回答 2
2回答

至尊宝的传说

这个答案是根据反馈更新的。代码应该是:@foreach(auth()->user()->notifics as $notification)@if($notification->data_type==1)&nbsp; &nbsp; &nbsp; &nbsp; <a href="#"> number 1</a>@elseif($notification->data_type==2)&nbsp; &nbsp; &nbsp; &nbsp; <a href="#"> number 2</a>@endif@endforeach当您尝试遍历用户的通知时,在每个循环中,您应该使用 直接检查通知的属性$notification->data_type。在您之前的代码中,您不断检查用户是否在每个循环中都有某种通知。因此,如果用户具有两种类型的通知并且他有 2 条通知记录,它将显示它们两次。我很高兴这有帮助,干杯!

陪伴而非守候

你只需要改变你的 if 语句。不要让你的代码复杂。有时代码实际上比我们期望的更容易:p$notification->data_type==1$notification->data_type==2您只需要直接通过 if 和 ifelse 语句中的这些更改直接访问属性。
随时随地看视频慕课网APP
我要回答