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

Undefined variable result while fetching data using laravel

我是 laravel 5 的新手 现在我在这里做什么 我只想从数据库 table 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');

这条路线

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

您在调用视图 index 时没有任何 result 变量,这会导致您出现此错误

如果没有result,首先你决定你想要什么,然后相应地做,为了处理错误你可以使用$result ?? []

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

如果你想从两个不同的 url //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]);
    }