Красноречивый запрос, брошенный на поплавок - PullRequest
0 голосов
/ 17 мая 2018

У меня есть красноречивый запрос, и я хочу привести поле к типу "float". Это агрегированное значение, и в настоящий момент оно возвращается в виде строки, вот пример запроса:

$productStats->selectRaw("
    product.id,
    TRIM(product.name) AS item_name,
    SUM(IF(order.order_paid_date BETWEEN '" . $start->timestamp . "' AND '" . $end->timestamp . "' AND order.order_type = 'order' AND (open_count > 0 OR click_count > 0), order_item.total_price, 0)) as revenue,
    COALESCE(CAST(SUM(IF(order.updated_date BETWEEN '" . $start->timestamp . "' AND '" . $end->timestamp . "' AND order.order_type = 'order' AND (open_count > 0 OR click_count > 0), 1, 0)) as SIGNED), 0) / CAST(SUM(IF(order.updated_date BETWEEN '" . $start->timestamp . "' AND '" . $end->timestamp . "' AND order.order_type = 'order', 1, 0)) as SIGNED) AS change_rate
");

revenue и change_rate в настоящее время возвращаются как строки, но я бы хотел, чтобы они были плавающими. Они являются вычисленными значениями, поэтому я не могу добавить в модель приведение атрибутов.

РЕДАКТИРОВАТЬ: я удалил DECIMAL из моего запроса за комментарий.

1 Ответ

0 голосов
/ 21 мая 2018

Добавьте их к вашей модели $casts:

protected $casts = [
    'revenue' => 'float',
    'change_rate' => 'float',
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...