Php 如何将原始查询结果从控制器传递到视图?
我需要从数据库中生成一个数字,并在视图的输入中显示它 我使用MySQL上的函数来实现这一点,所以我使用原始表达式Php 如何将原始查询结果从控制器传递到视图?,php,laravel,laravel-query-builder,laravel-views,Php,Laravel,Laravel Query Builder,Laravel Views,我需要从数据库中生成一个数字,并在视图的输入中显示它 我使用MySQL上的函数来实现这一点,所以我使用原始表达式 $nomor = DB::table('customers')- >selectRaw('concat(year(now()),lpad(month(now()),2,0),lpad(id, 3, 0)) as nomor') ->where('id', '=', $customers->id)->get(); 当我将变
$nomor = DB::table('customers')-
>selectRaw('concat(year(now()),lpad(month(now()),2,0),lpad(id, 3, 0))
as nomor')
->where('id', '=', $customers->id)->get();
当我将变量传递到视图中时
<input type="text" class="form-control @error('nomor') is-invalid @enderror" id="nomor" placeholder="" name="nomor" value="{{ $nomor }}">
当前结果:“[{“名称”:“201909001”}” 我的预期结果是: 201909001无报价 调用
get()
函数时,该函数返回一个包含所有查询结果的数组
例如,如果select返回3行,$nomor
返回一个集合(如带类固醇的数组),集合有3个位置,查询返回的每行一个位置,get()
函数在每个位置返回一个对象,其属性为select,因此,在本例中,访问nomor
列的正确方法是:
<input type="text" class="form-control @error('nomor') is-invalid @enderror" id="nomor" placeholder="" name="nomor" value="{{ $nomor[0]->nomor }}">
注意,我们不是只调用$nomor
对象,而是访问结果的第一行$nomor[0]
,并获取与查询的列名相对应的属性$nomor[0]->nomor
,当您使用->get()
时,您会得到一个集合
,它本质上是一个具有附加功能的阵列。使用{{$nomor}}
时,输出的是集合的全部内容。要解决此问题,请使用->first()
:
然后在您的视图中,作为对象访问它(因为DB::table()->first()
将返回一个stdClass
):
我试过$nomor->nomor和$nomor[0]['nomor']。谢谢威廉的回答。我一到家就试试。
$nomor = DB::table('customers')
->selectRaw('concat(year(now()),lpad(month(now()),2,0),lpad(id, 3, 0)) as nomor')
->where('id', '=', $customers->id)
->first();
<input type="text" ... value="{{ $nomor->nomor }}"/>