我是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');
答案 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]);
}