Проблемы с пониманием того, как извлечь данные из результата из запроса - PullRequest
0 голосов
/ 29 марта 2020

Я новичок в Laravel / Eloquent и не могу понять, как извлечь данные из результата из запроса.

В Laravel Я вызываю следующий запрос в контроллере.

$purchase['purchase_price_total_LY'] = DB::table('coins')
        ->select(DB::raw('SUM (purchase_price) as purchase_price_total_LY'))
        ->where('user_email', '=', auth()->user()->email)
        ->whereBetween(DB::raw('DATE(purchase_date)'), [$range_lastyr_start, $range_lastyr_end])
        ->get();

и передача результата обратно в представление в возвращаемом виде следующим образом:

return view ('pages.financials', compact('user', 'purchase'));

В представлении:

<td>Purchase Price:</td><td><a> {{$purchase['purchase_price_total_LY']}}</a></td>

Результат в представлении таков:

[{"purchase_price_total_ly":"37"}]

Когда я делаю дд (покупка $, покупка $ ['purchase_price_total_LY']); Я вижу следующее:

array:1 [▼
  "purchase_price_total_LY" => Illuminate\Support\Collection {#548 ▼
    #items: array:1 [▼
      0 => {#547 ▼
        +"purchase_price_total_ly": "37"
      }
    ]
  }
]
Illuminate\Support\Collection {#548 ▼
  #items: array:1 [▼
    0 => {#547 ▼
      +"purchase_price_total_ly": "37"
    }
  ]
}

Какой самый подходящий способ извлечь 37 из массива в представлении?

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Да, это сработало.

Я также попытался сделать следующее, и это сработало. Я изменил запрос контроллера на использование «-> first ()» и изменил переменную

$purchase_price_total_LY = DB::table('coins')
            ->select(DB::raw('SUM (purchase_price) as purchase_price_total_LY'))
            ->where('user_email', '=', auth()->user()->email)
            ->whereBetween(DB::raw('DATE(purchase_date)'), [$range_lastyr_start, $range_lastyr_end])
            ->first();

, затем изменил возвращаемое значение на следующее:

return view ('pages.financials', compact('user', 'purchase_price_total_LY')

Затем в представлении я изменил на это:

<tr><td>Purchase Price:</td><td><a>{{$purchase_price_total_LY->purchase_price_total_ly }}</a></td>

и теперь у меня есть ответ 37.

0 голосов
/ 29 марта 2020

Если предполагается, что из базы данных возвращается только 1 значение, вы можете изменить значение get на первое, например

$purchase['purchase_price_total_LY'] = optional(DB::table('coins')
        ->select(DB::raw('SUM (purchase_price) as purchase_price_total_LY'))
        ->where('user_email', '=', auth()->user()->email)
        ->whereBetween(DB::raw('DATE(purchase_date)'), [$range_lastyr_start, $range_lastyr_end])
        ->first())->purchase_price_total_LY;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...