首页 > 解决方案 > 如果其他情况,Laravel Blade Foreach 循环中的错误

问题描述

我的代码有关于 foreach 和 if 条件的问题。当我将else代码块从 foreach 循环中拉出时,没有问题,它可以工作。但是我在循环中放入了其他代码。否则不工作,不显示任何东西。

我的目的,程序检查是否在 total_bonuses 数据表中使用了 user_id 如果确定我只想显示更新表单,如果在 total_bonuses 中没有记录 user_id 我想显示商店论坛和用户添加到信息。好像很复杂。

我的控制器代码如下

public function show($lang=null, $id)
    {
        $bonuses = DB::table('reservations')
         ->select(DB::raw('SUM(bonus) as total_bonus, user_id'))
         ->where('user_id', '=', $id)
         ->groupBy('user_id')
         ->get();

         $dolars = DB::table('reservations')
         ->select(DB::raw('SUM(dolar) as dolar, user_id'))
         ->where('user_id', '=', $id)
         ->groupBy('user_id')
         ->get();

         $confirmeds = DB::table('reservations')
         ->select(DB::raw('SUM(confirmation) as confirmed, user_id'))
         ->where('confirmation', '=', 1)
         ->where('user_id', '=', $id)
         ->groupBy('user_id')
         ->get();

        $user = DB::table('users')->find($id);
        $totals = DB::table('total_bonuses')->where('user_id', '=', $id)->get();
        return view('wallet.show', compact('totals', 'user', 'bonuses', 'dolars', 'confirmeds'));

    }

查看代码如下

@foreach ($totals as $total)
@if ($total->new_dollar !== NULL) 
<div class="col-12"><a href="javascript:void(0)" class="link"><i class="mdi mdi-check-circle text-success"></i> <font class="font-medium"> {!! $total->new_dollar !!}
 Remaining Dollar</font></a></div>
@endif

                                    </div>
                                </center>
                            </div>
                            <div>
                    </div>

                        </div>
                    </div>
                    <!-- Column -->

                    <!-- Column -->

                    <div class="col-lg-8 col-xlg-9 col-md-7">
                        <div class="card">

@if (count($total->user_id) === 1)
<br>
<br>
    <label class="col-md-12"><h4>  Paid Dollar</h4></label>
<form class="form-horizontal form-material" method="POST" action="{{ route ('total.update', ['lang' => App::getLocale(), 'id' => $total->id]) }}">

         {{ csrf_field() }}
        <input type="hidden" name="_method" value="PATCH">
        <input type="hidden" name='id' value='{!! $total->id !!}'>
        <input type="hidden" name='user_id' value='{!! $user->id !!}'>
    <div class="form-group">
        <label class="col-md-12">Total Dollar</label>
        <div class="col-md-12">
            <input name="old_dollar" type="text" value="{!! $total->new_dollar !!}" class="form-control form-control-line" readonly>
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-12">Paid Dollar</label>
        <div class="col-md-12">
            <input name="paid_dollar" type="text" class="form-control form-control-line">
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-12">Note (Optionally! Not Required)</label>
        <div class="col-md-12">
            <input name="bonus_note" type="text" class="form-control form-control-line">
        </div>
    </div>
            <input name="moderator_id" type="hidden" value="{{ Auth::user()->id }}">
    <div class="form-group">
        <div class="col-sm-12">
            <button class="btn btn-success" type="submit">{{ __('profile.update')}}</button>
        </div>
    </div>
</form>

@else

<form class="form-horizontal form-material" method="POST" action="{{ route ('total.store', ['lang' => App::getLocale()]) }}">
{{ csrf_field() }}
<input type="hidden" name='user_id' value='{!! $user->id !!}'>
    <div class="form-group">
        <label class="col-md-12">Total Dollar</label>
        <div class="col-md-12">
            <input name="old_dollar" type="text" value="@foreach ($dolars as $dolar)
    {{ $dolar->dolar }}
@endforeach" class="form-control form-control-line" readonly>
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-12">Paid Dollar</label>
        <div class="col-md-12">
            <input name="paid_dollar" type="text" class="form-control form-control-line">
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-12">Note (Optionally! Not Required)</label>
        <div class="col-md-12">
            <input name="bonus_note" type="text" class="form-control form-control-line">
        </div>
    </div>
            <input name="moderator_id" type="hidden" value="{{ Auth::user()->id }}">
    <div class="form-group">
        <div class="col-sm-12">
            <button class="btn btn-success" type="submit">{{ __('profile.update')}}</button>
        </div>
    </div>
</form>
@endif

@endforeach

最好的祝愿。

标签: laravelfor-loopif-statementlaravel-5.5laravel-blade

解决方案


您提供的视图中的问题在于 if 条件。在这里,您尝试计算不可能的用户 ID:-

@if (count($total->user_id) === 1)    

把上面的代码改成

@if (count($total) === 1)

推荐阅读