如何在laravel中的参数中传递带有$ request的if语句

问题描述 投票:0回答:3

我在这里真正的泡菜。我有一个在表格中显示人名的网页。在这张表中有一个选择表格,我指出它们是否是“好面条”。在数据库中,好的noodle变量是一个布尔值。我将把我的代码放在下面。我的问题是,我不能让它更新我在好面条选项中选择的任何内容以重新存在的兄弟的记录。

当我尝试打印并看到它的价值时,它的工作正常。但无论出于何种原因,它都不会更新记录。

我的控制器:

public function update(Request $request)
{
    $brothers = Brother::all();

    foreach ($brothers as $b){
        $b->GoodNoodle = $request['goodNoodle'];
        $b->save();

        //Failed attempt #1
        //if ($request['goodNoodle'] == "No"){
            //$b->GoodNoodle = "0";
            //$b->save();
            //}
        //else{
            //$b->GoodNoodle = "1";
            //$b->save();
            //}

        //Failed Attempt #2 ive also tried every variation of this
        //if($b['goodNoodle'] != $request['goodNoodle']){
          //$b->GoodNoodle = $request->goodNoodle;
          //$b->save();
        //}
    }

}

我的blade.php:

<form method="Post" action="{{route('update_brother')}}">
            <input type="hidden" name="_token" value="{{csrf_token()}}">
            <table class="table">
                <tbody class="text-center">
                <tr>
                    <th>Good Noodle</th>
                    <th>Brother Name</th>
                    <th>Brother Class</th>
                    <th>Zeta Number</th>
                </tr>
                @foreach($brothers as $b)
                    <tr>
                        <td>
                            <select class="form-control" id="exampleFormControlSelect1" name="goodNoodle">
                                <option value="1">Yes</option>
                                <option value="0"{{!$b["goodNoodle"]? "selected": ""}}>No</option>
                            </select>
                        </td>
                        <td>
                            {{$b->fName.' '.$b->lName}}
                        </td>
                        <td>
                            {{$b->zetaClass}}
                        </td>
                        <td>
                            <input type="hidden" name="zetaNum">{{$b->zetaNum}}
                        </td>
                    </tr>
                @endforeach
                </tbody>
            </table>
            <input class="btn btn-primary btn-block" type="submit" value="Submit">
        </form>

这里有一些线索。如果我这样做:

$value = $request->GoodNoodle; //with $value being equal to 1

if $b['goodNoodle'] = $value{
   $b->goodNoodle = "0"
} 

然后它会将我的所有记录更改为0.但如果我这样做

$value = $request->GoodNoodle; //with $value being equal to 1

if $b['goodNoodle'] = $value{
   $b->goodNoodle = $value
} 

它什么都不做。请帮忙。

php laravel
3个回答
1
投票

您也可以使用三元运算符。

<select class="form-control" id="exampleFormControlSelect1" name="goodNoodle">
    <option value="0" {{ $b->goodNoodle == '0' ? 'selected' : '' }}>No</option>
    <option value="1" {{ $b->goodNoodle == '1' ? 'selected' : '' }}>Yes</option>
</select>

0
投票

如果要比较DB和请求中的值,请执行以下操作:

if ($b['goodNoodle'] == $request->goodNoodle)

代替:

if($b['goodNoodle'] = $request->goodNoodle])

0
投票

您应该更改您的选择框,如下所示:

<select class="form-control" id="exampleFormControlSelect1" name="goodNoodle">
 <option value="0" @if($b->goodNoodle == '0') selected @endif>No</option>
 <option value="1" @if($b->goodNoodle == '1') selected @endif>Yes</option>
</select>
© www.soinside.com 2019 - 2024. All rights reserved.