Я пытаюсь использовать функцию, которую написал в моем файле routes.php:
функция такая:
function userScore($uid) {
$db = $app->get('db');
//calcolo punteggio totale
$query_punti = $db->table('prodotti_sounding')
->where('id_utente', $uid)
->select('punti')
->get();
$totale_punti = 0;
foreach($query_punti as $item) {
$totale_punti += $item->punti;
}
}
он возвращает эту ошибку:
Slim Application Error The application could not run because of the following error:
Type: Error Message: Call to a member function get() on null
где я не прав?
РЕДАКТИРОВАТЬ
мой соответствующий код в routes.php после первого ответа:
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Illuminate\Database\Connection;
use Slim\Http\UploadedFile;
use Illuminate\Support\Facades\DB as DB;
$container = $app->getContainer();
$app->post('/sendbarcode', function ($request, $response){
/* parametri barcode */
/** @var Container $this */
/** @var Connection $db */
$barcode = $request->getParsedBodyParam('barcode');
$id_utente = $request->getParsedBodyParam('id_utente');
$db = $this->get('db');
// prepare data for json
$array['itacheck'] = 0;
if (checkbarcode($barcode) == 1 ) {
$array['it_check'] = 1;
$array['punti'] = 25;
$array['totalepunti'] = userScore($id_utente);
}
$array['barcode'] = $rows;
if (count($rows) > 0){
return $response->withJson($array, 200, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_LINE_TERMINATORS);
}
});
function userScore($uid) {
//calcolo punteggio totale in base alle segnalazioni pregresse
$query_punti = DB::table('prodotti_sounding')
->where('id_utente', $uid)
->select('punti')
->get();
// check total points
$totale_punti = 0;
foreach($query_punti as $item) {
$totale_punti += $item->punti;
}
}


Ошибка становится $db = $app->get('db');, потому что вы не указали переменную $app. Instaed вы можете использовать это
//calcolo punteggio totale
$query_punti = DB::table('prodotti_sounding')
->where('id_utente', $uid)
->select('punti')
->get();
DB полное имя класса - \Illuminate\Support\Facades\DB
Править
В этом случае добавьте атрибут $app в аргумент функции
function userScore($uid, $app) {
$db = $app->get('db');
Тип: RuntimeException Сообщение: не задан корень фасада.
функция определена внутри routes.php, и в том же файле у меня есть несколько других запросов, которые работают нормально
Я нашел решение раньше вашего, но ваше решение почти такое же, как у меня, но я передаю объект $ db напрямую. TNX
у меня не работает ... как мне использовать переменную $ app в этом контексте?