使用laravel获取数据时未定义的变量结果

时间:2019-05-14 06:20:56

标签: php laravel-5.4

我是laravel 5的新手现在我在这里做什么简单地我想从数据库表states中的数据country_id='101'中获取数据。并在我的视图文件中应用foreach循环,但显示错误,即undefined variable: result。我不知道为什么和在哪里做错了?请帮助我。

app / http / controller / FirstController.php

<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use DB;
    use App\Http\Requests;
    use App\Http\Controllers\Controller;

    class FirstController extends Controller
    {
        public function state()
        {
            $sql = DB::select('select * from states where country_id="101"');
            return view('index',['result'=>$sql]);
        }
    }

resources / views / index.blade.php

<select name="state" class="form-control" id="state">
    <option value="null">India:State</option>
    @foreach($result as $row)
        <option value="{{ $row->id }}">{{ $row->name }}</option>
    @endforeach
</select>

routes / web.php

<?php
    Route::get('/', function () {
        return view('index');
    });
    Route::get('index','FirstController@state');

1 个答案:

答案 0 :(得分:0)

在这条路线上

Route::get('/', function () {
    return view('index');
});

您正在调用视图index,而没有任何result变量,这会给您此错误

首先,如果没有result,请决定要做什么,然后相应地进行操作,以处理错误,您可以使用$result ?? []

@foreach($result ?? [] as $row)

如果要从两个不同的网址//index调用相同的方法,请在下面的路由中使用

Route::get('/','FirstController@state');
Route::get('index','FirstController@state');

还可以更改查询生成器,使其看起来更像laravel样式。

    public function state()
    {
        $sql = DB::table('states')->where('country_id',101)->get();
        return view('index',['result'=>$sql]);
    }