Как передать необработанный результат запроса от контроллера для просмотра? - PullRequest
0 голосов
/ 26 сентября 2019

Мне нужно сгенерировать число из базы данных и показать его на входе в представлении.

Для этого я использую функцию на 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 }}">

текущий результат:
current result

"[{" nomor ":" 201909001 "}] "

мой ожидаемый результат:

201909001 без кавычек

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Когда вы используете ->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 }}"/>
0 голосов
/ 26 сентября 2019

Когда вы вызываете функцию 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

...