Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте. Есть таблица 'products', 'vendors' и 'prices'. Они пока не как не связаны. Хочу сделать что бы вендоры могли устанавливать цены на товары. Вопрос в том как их всех грамотно связать? Есть варриант: вендоры относятся к товарам, цены относятся к вендорам, и товары имеют цены через вендоров. Но возникает вопрос, как товар будит получать именно свою цену? Получается хто не правильная структура. У кого нибудь есть идеи?)
Не в сети
VitalN
Спасибо. Попробую с этой структурой сделать
Продолжение темы.
Все четко работает, но теперь хочу сделать систему тракинга, что б записывать переходы пользователей.
Сейчас таблица цен такая:
product_id | vendor_id | price | link
Таблица тракинга:
user_token | vendor_id
Роут: Route::get('vendor/{id}', 'VendorController@clickTracking');
Вопрос в том, как правильно сделать ссылку что бы записать токен пользователя и ссылку вендора на которую произойдет редирект? Пример
<a href="{{ url('vendor/' . $vendor-id . '?token=' .csrf_token()) }}">перейти</a>
И как можно отследить пользователя который уже кликнул на ссылку? Ставить кук? Писать в сессию? Или?
Не в сети
}%>Таблица тракинга:
>user_token | vendor_idА product_id не нужен?
Сформируй задачу точнее
Csrf-токен зачем писать? Типа уникальные переходы считать?
Product_id забыл)
Да, токен что бы считать пользователя. Что бы он не накручивал клики.
Вообще это мне для того, что бы можно было показать вендору статистику переходов в его магазин. Столько то переходов за сегодня, столько то за месяц. Примерно как на хотлайне, яндекс маркет, прайс ру.
Вот такую систему хочу сделать
Не в сети
Надо вычислить среднюю цену. Цены находятся в связующей таблице. Самую маленькую и самую большую цену я вычисляю так
$small = $product->vendors()->orderBy('pivot_price', 'asc')->first();
$large = $product->vendorss()->orderBy('pivot_price', 'desc')->first();
В шаблоне уже так
<div class="prices">
{{ $small->pivot->price }} - {{ $large->pivot->price }}
</div>
Знаю что есть функция avg(); , но чет не знаю куда ее впихнуть. Подскажите)
SELECT AVG(field) AS fieldName FROM table
$average = $product->vendors()->selectRaw('AVG(field)')
или что-то в том духе... архитектуры не видел, подсказаить точнее не могу.
Не в сети
hzone Спасибо за наводку.
В итоге все оказалось очень просто.
// Пивотная таблица
product_id | vendor_id | price | link
Задача была в том, что бы посчитать самое маленькое значение поля "price", самое большое, и среднее. Решение ниже
$small = $product->vendors()->min('price');
$large = $product->vendors()->max('price');
$avg = $product->vendors()->avg('price');
в 1 запрос
SELECT MIN(field) AS field_min, AVG(field) AS field_avg, MAX(field) AS field_max
Изменено hzone (28.07.2016 09:11:34)
Не в сети
в 1 запрос
SELECT MIN(field) AS field_min, AVG(field) AS field_avg, MAX(field) AS field_max
С элокуэнт в 1 запрос не выходит
Model::selectRaw('MIN(field) AS field_min, AVG(field) AS field_avg, MAX(field) AS field_max')->first()
Не в сети
Model::selectRaw('MIN(field) AS field_min, AVG(field) AS field_avg, MAX(field) AS field_max')->first()
Спасиб) незнал что так можно)
Страницы 1