0

我需要从数据库中生成一个数字并将其显示在视图的输入中。

我在 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 }}">

当前结果:
当前结果

“[{“诺莫尔”:“201909001”}]”

我的预期结果是:

201909001无报价

4

2 回答 2

0

当您调用get()函数时,该函数会返回一个包含所有查询结果的数组。

例如,如果您的选择返回 3 行,则$nomor返回具有 3 个位置的集合(如带有类固醇的数组),查询返回的每行一个,并且在每个位置,该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]并获取与查询的列名对应的属性$nomor[0]->nomor

于 2019-09-26T20:39:09.223 回答
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();

然后在您看来,将其作为 a 访问object(因为DB::table()->first()将返回 a stdClass):

<input type="text" ... value="{{ $nomor->nomor }}"/>
于 2019-09-26T20:41:53.027 回答