2016-05-17 3 views
0

Я использую этот ниже код, чтобы суммировать весь мой баланс кошелька.Query builder извлекает данные в cakephp 3.2

$query = $this->Wallets->find(); 
$query->select([ 
    'count' => $query->func()->count('id'), 
    'total_price' => $query->func()->sum('amount') 
]) 
->where(['status' => 4, 'user_id' => $user_id]); 
pj($query); 
echo $query->total_price; 
exit; 

из положить pj($query);

[ 
    { 
     "count": 2, 
     "total_price": 700 
    } 
] 

Здесь я попытался получить одного отдельного значения, используя ниже запроса

echo $query->total_price; 

Я не получаю его. Что такое правильный синтаксис, PLZ предложить мне. Thanx.

ответ

1
$query = $this->Wallets->find(); 
$query->select([ 
    'count' => $query->func()->count('id'), 
    'total_price' => $query->func()->sum('amount') 
]) 
->where(['status' => 4, 'user_id' => $user_id]); 
debug($query); 

// loop your results 
foreach($query as $result){ 
    echo $result->total_price; 
} 

// or 
$query->toArray(); 
echo $query[0]->total_price; 
echo $query[1]->total_price; 
... 
exit; 
+0

Да, foreach один работает, я получаю точный результат. Второй не работает (ответ в или). – sradha

+0

Хорошо, спасибо, я получил свой ответ. Благодарим вас за помощь. – sradha

5

добавить first() к вашему запросу, см manual

$query->select([ 
    'count' => $query->func()->count('id'), 
    'total_price' => $query->func()->sum('amount') 
]) 
->where(['status' => 4, 'user_id' => $user_id]); 

$wallet = $query->first(); 

debug($wallet); 

debug($wallet->total_price); 
+0

Не получение результата. – sradha

+0

Добавить дополнительную информацию: что вы получаете? Какой запрос сгенерирован? что вы получаете, когда вы отлаживаете ($ query) '? – arilia

+0

Да degug ($ query), возвращающий результат, но debug ($ query-> total_price), эта ошибка бросания. Я не получаю отдельного индивидуального значения. – sradha

Смежные вопросы