Php 如果then未给出预期结果-laravel

Php 如果then未给出预期结果-laravel,php,laravel,Php,Laravel,我有一个通知表,其中每一行将向用户显示不同的通知。我想做的是,如果一行中的值为1,那么显示一个句子,如果值为2,那么显示另一个句子。如果我有两行,其中一行有1,另一行有2,那么显示两行 你知道为什么下面的代码总是给出“数字1”的输出,尽管表中有“数字2”的值吗 @foreach(auth()->user()->notifics as $notification) @if(Auth::user()->notifics()->where('data_type', 1)-

我有一个通知表,其中每一行将向用户显示不同的通知。我想做的是,如果一行中的值为1,那么显示一个句子,如果值为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

@foreach(auth()->user()->通知为$notification)
@if(Auth::user()->notifics()->where('data_type',1)->first()->exists())
@elseif(Auth::user()->notifics()->where('data_type',2)->first()->exists())
@恩迪夫
@endforeach

此答案将根据反馈进行更新。代码应为:

@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
@foreach(auth()->user()->通知为$notification)
@如果($notification->data_type==1)
@elseif($notification->data_type==2)
@恩迪夫
@endforeach
当您尝试遍历用户的通知时,在每个循环中,您应该使用
$notification->data\u type
直接检查通知的属性


在前面的代码中,您不断检查用户在每个循环中是否有一种通知类型。因此,如果一个用户同时拥有这两种类型的通知,并且他有两条通知记录,那么这两条记录都会显示两次。我很高兴这有帮助,干杯

此答案将根据反馈进行更新。代码应为:

@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
@foreach(auth()->user()->通知为$notification)
@如果($notification->data_type==1)
@elseif($notification->data_type==2)
@恩迪夫
@endforeach
当您尝试遍历用户的通知时,在每个循环中,您应该使用
$notification->data\u type
直接检查通知的属性


在前面的代码中,您不断检查用户在每个循环中是否有一种通知类型。因此,如果一个用户同时拥有这两种类型的通知,并且他有两条通知记录,那么这两条记录都会显示两次。我很高兴这有帮助,干杯

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

$notification->data_type==1

$notification->data_type==2

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

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

$notification->data_type==1

$notification->data_type==2

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

因为如果
if
条件为true,则
elseif
不会运行。这同样适用于
else
。解决方案是什么?不知道。取决于你真正想要达到的目标。在这一点上,从逻辑上讲,它的工作方式与预期的一样。我需要显示所有的“数据类型”,或者1,或者2。您显示的是1,或者2,或者什么都没有,所以听起来不错。您的意思是要显示
编号1
编号2
?因为如果
if
条件为true,则
elseif
不会运行。这同样适用于
else
。解决方案是什么?不知道。取决于你真正想要达到的目标。在这一点上,从逻辑上讲,它的工作方式与预期的一样。我需要显示所有的“数据类型”,或者1,或者2。您显示的是1,或者2,或者什么都没有,所以听起来不错。你的意思是想显示第1号和第2号吗?它确实将它们拆分了,现在两个都显示了,但每个都显示两次而不是一次。我只有一张1人的唱片和一张2人的唱片,但每张都放映了2次。噢,很抱歉,我可能没有正确理解你的想法。但是你能试试这个\
@foreach(auth()->user()->notifications as$notification)@if($notification->data\u type==1)@elseif($notification->data\u type==2)@endif@endforeach
酷!你介意把这个标记为正确答案吗?;)非常感谢famIt将他们分开,现在两个都在放映,但每个放映两次而不是一次。我只有一张1人的唱片和一张2人的唱片,但每张都放映了2次。噢,很抱歉,我可能没有正确理解你的想法。但是你能试试这个\
@foreach(auth()->user()->notifications as$notification)@if($notification->data\u type==1)@elseif($notification->data\u type==2)@endif@endforeach
酷!你介意把这个标记为正确答案吗?;)非常感谢你的邀请