我需要从数据库生成一个数字,并在视图的输入中显示它。
我在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();
当我将变量传递到视图中时,
<input type="text" class="form-control @error('nomor') is-invalid @enderror" id="nomor" placeholder="" name="nomor" value="{{ $nomor }}">
“ [{” nomor“:” 201909001“}]”
我的预期结果是:
201909001 不带引号
答案 0 :(得分:0)
调用get()
函数时,该函数将返回包含查询所有结果的数组。
例如,如果您的select返回3行,则$nomor
返回具有3个位置的集合(如带有类固醇的数组),查询返回的每行一个,在每个位置,{{1 }}函数返回一个带有属性的对象作为您的选择,因此,在这种情况下,访问get()
列的正确方法是:
nomor
请注意,我们只调用<input type="text" class="form-control @error('nomor') is-invalid @enderror" id="nomor" placeholder="" name="nomor" value="{{ $nomor[0]->nomor }}">
对象,而是访问结果$nomor
的第一行,并获取与查询$nomor[0]
的列名相对应的属性
答案 1 :(得分:0)
使用->get()
时,您会得到Collection
,它实际上是具有附加功能的数组。使用{{ $nomor }}
时,将输出Collection
的全部内容。要解决此问题,请使用->first()
:
$nomor = DB::table('customers')
->selectRaw('concat(year(now()),lpad(month(now()),2,0),lpad(id, 3, 0)) as nomor')
->where('id', '=', $customers->id)
->first();
然后在您的视图中,以object
的身份访问它(因为DB::table()->first()
将返回stdClass
):
<input type="text" ... value="{{ $nomor->nomor }}"/>