【问题标题】:Laravel 5.8 - Invalid argument supplied for foreach()?Laravel 5.8 - 为 foreach() 提供的参数无效?
【发布时间】:2021-09-01 02:58:57
【问题描述】:

我尝试在管理员表中显示数据。

这是我的 admin.blade.php:

<form method="post" action="post_namaadmin">
    <input type="text" name="txtnamaadmin" id="txtnamadmin" value="1">
    <input type="submit" name="btnnamadmin" id="btnamaadmin">
</form>
<div class="card-body">
      <table border="1">
          @foreach($datalama as $rows)
          <tr>
              <td>ID : </td>
              <td>{{ $rows->userid }}</td>
              <td>Nama : </td>
              <td>{{ $rows->nama }}</td>
          </tr>
          
        <tr>
            <td>Section</td>
            <td>IM</td>
            <td>CO</td>
            <td>SH</td>
            <td>PL</td>
            <td>RI</td>
            <td>ME</td>
            <td>TB</td>
            <td>CF</td>    
        </tr>
          
          <tr>
              <!-- //1 --> 
              <td>{{ $rows->a1 }}</td>
              <td>{{ $rows->b1 }}</td>
              <td>{{ $rows->c1 }}</td>
              <td>{{ $rows->d1 }}</td>
              <td>{{ $rows->f1 }}</td>
              <td>{{ $rows->g1 }}</td>
              <td>{{ $rows->h1 }}</td>
              <!-- //1 --> 
              <td>{{ $rows->a2 }}</td>
              <td>{{ $rows->b2 }}</td>
              <td>{{ $rows->c2 }}</td>
              <td>{{ $rows->d2 }}</td>
              <td>{{ $rows->f2 }}</td>
              <td>{{ $rows->g2 }}</td>
              <td>{{ $rows->h2 }}</td>
              <!-- //3 --> 
              <td>{{ $rows->a3 }}</td>
              <td>{{ $rows->b3 }}</td>
              <td>{{ $rows->c3 }}</td>
              <td>{{ $rows->d3 }}</td>
              <td>{{ $rows->f3 }}</td>
              <td>{{ $rows->g3 }}</td>
              <td>{{ $rows->h3 }}</td>
              <!-- //4 --> 
              <td>{{ $rows->a4 }}</td>
              <td>{{ $rows->b4 }}</td>
              <td>{{ $rows->c4 }}</td>
              <td>{{ $rows->d4 }}</td>
              <td>{{ $rows->f4 }}</td>
              <td>{{ $rows->g4 }}</td>
              <td>{{ $rows->h4 }}</td>
              <!-- //5 --> 
              <td>{{ $rows->a5 }}</td>
              <td>{{ $rows->b5 }}</td>
              <td>{{ $rows->c5 }}</td>
              <td>{{ $rows->d5 }}</td>
              <td>{{ $rows->f5 }}</td>
              <td>{{ $rows->g5 }}</td>
              <td>{{ $rows->h5 }}</td>
              <!-- //6 --> 
              <td>{{ $rows->a6 }}</td>
              <td>{{ $rows->b6 }}</td>
              <td>{{ $rows->c6 }}</td>
              <td>{{ $rows->d6 }}</td>
              <td>{{ $rows->f6 }}</td>
              <td>{{ $rows->g6 }}</td>
              <td>{{ $rows->h6 }}</td>
              <!-- //7 --> 
              <td>{{ $rows->a7 }}</td>
              <td>{{ $rows->b7 }}</td>
              <td>{{ $rows->c7 }}</td>
              <td>{{ $rows->d7 }}</td>
              <td>{{ $rows->f7 }}</td>
              <td>{{ $rows->g7 }}</td>
              <td>{{ $rows->h7 }}</td>
          </tr>
          @endforeach
      </table>
</div>

代码尚未完成,但应该给出表格的粗略图片。

这是我在 web.php 中的路线:

Route::post('/post_namaadmin', 'DataController@admin' ) ->name ('postnamaadmin');

DataController.php 中的函数:

public function admin(Request $request){
        $mk                 = new data();
        $param['datalama']  = $mk->ambilData($request->txtnamaadmin);
        return view('admin',$param);
    }

数据类中的函数:

public function ambilData($nama){
        $query = data::orderby('userid')->where('nama','=' ,'$nama')->first();
        return $query;
    }

这是错误:

> ErrorException {#230 ▼   #message: "Invalid argument supplied for
> foreach()"   #code: 0   #file:
> "C:\xampp\htdocs\kuesioner1\storage\framework\views\5c1b0932d9bc5a402e110419f0ce7e166c7a2109.php"
> #line: 22   #severity: E_WARNING } 1

我是 Laravel 的新手。为什么我使用5.8,我的上级要求我这样做。非常感谢所有帮助和建议。

【问题讨论】:

  • 这样使用查询,$query = data::orderby('userid')->where('nama',$nama)->first();

标签: laravel laravel-5.8


【解决方案1】:

当你尝试dd($param['datalama']) 时,你会得到null,因为你的查询没有找到,使用-&gt;where('nama','=' ,'$nama')

你需要改变数据类ambilData方法

public function ambilData($nama){
    return data::orderby('userid')
        ->where('nama', $nama)
        ->get();
}

【讨论】:

    【解决方案2】:

    我认为你应该把 $param['datalama'] 放在 foreach 中

    并将视图函数更改为view('admin',compact('param'))

    并且在表单标签中你需要将动作更改为

    <form action="{{route('postnamaadmin')}}">
    

    【讨论】:

    • 它给了我错误Undefined variable: param
    • 当你调用 view 时,它应该是:view('admin',['param' =&gt; $param]) 在这种情况下。否则,为了让您原来的 foreach 工作,您可以发送 view('admin',['datalama' =&gt; $param['datalama']])
    • 如@user3532758所说,也可以使用view('admin',compact('param'))
    • @omaresmaeel 我认为您应该编辑答案以包含这些内容。只是一个建议。
    • 请问compact() 用户的用途是什么?
    猜你喜欢
    • 2018-12-09
    • 1970-01-01
    • 2015-06-29
    • 2022-01-27
    • 2018-02-26
    • 2017-11-26
    • 2021-12-25
    • 2019-10-05
    • 2018-10-31
    相关资源
    最近更新 更多