Alex
Ребят, а как правильно и можно ли в eloquent получить сразу и ->count() и sum('amount') ??
Alex
одним запросом имею ввиду
Алексей
Ребят, помогите, пожалуйста. Есть модель и таблица с продуктами и модель и таблица с ценами на продукты. Если у продукта нету цены, как её лучше сделать? foreach ($productModel->cursor() as $product) { $product->salesPrice()->price = 5; } } ?
Алексей
Так?
Andrey
я бы на твоём месте сделал у модели метод
Andrey
геттер для цены
Andrey
и в этом геттере проверял если есть - выводим её
Andrey
если нет - фоллбек
Алексей
А если нету - создаем?
Andrey
че-нить делаем, что тебе надо)
Alex
Ладно, насколько это страшно?) ` $total_sell_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->sum('amount'); $total_buy_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->sum('amount'); $total_sell_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_buy_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_sell_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_buy_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_offers = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where('coin', $coin)->count('id'); $total_sell_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->count(); $total_buy_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->count(); $sell_average = $total_sell_rate / $total_sell_rate_count; $buy_average = $total_buy_rate / $total_buy_rate_count; `
Алексей
Спасибо.
Dmitry
Ладно, насколько это страшно?) ` $total_sell_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->sum('amount'); $total_buy_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->sum('amount'); $total_sell_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_buy_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_sell_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_buy_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_offers = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where('coin', $coin)->count('id'); $total_sell_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->count(); $total_buy_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->count(); $sell_average = $total_sell_rate / $total_sell_rate_count; $buy_average = $total_buy_rate / $total_buy_rate_count; `
как минимум можно склонировать запрос перед выборкой, что бы 2 раза не писать
Vladimir
Ладно, насколько это страшно?) ` $total_sell_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->sum('amount'); $total_buy_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->sum('amount'); $total_sell_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_buy_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_sell_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_buy_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_offers = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where('coin', $coin)->count('id'); $total_sell_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->count(); $total_buy_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->count(); $sell_average = $total_sell_rate / $total_sell_rate_count; $buy_average = $total_buy_rate / $total_buy_rate_count; `
опять биткоины какие -то... всё дублирующееся засунь в scope
Alex
не биткоин, просто обменник
Alex
Alex
вот такое вывести нужно
Alex
да я бы засунул, но дублирующие есть только where('expire_at', '>=', date('Y-m-d H:i:s', time())) и местами 'type' =>'sell', 'coin' => $coin,
Vladimir
Ладно, насколько это страшно?) ` $total_sell_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->sum('amount'); $total_buy_summ = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->sum('amount'); $total_sell_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_buy_rate = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->sum('rate'); $total_sell_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_buy_rate_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin, 'rate_coin' => $rate_coin])->count(); $total_offers = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where('coin', $coin)->count('id'); $total_sell_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'sell', 'coin' => $coin])->count(); $total_buy_count = Offers::where('expire_at', '>=', date('Y-m-d H:i:s', time()))->where(['type' =>'buy', 'coin' => $coin])->count(); $sell_average = $total_sell_rate / $total_sell_rate_count; $buy_average = $total_buy_rate / $total_buy_rate_count; `
пары count() можно заменить на один запрос groupBy по type
Alex
спасиб
Mykola
Hi!
Daniil 👾
прив
Oleksii
Ребзи, а что может быть не так? Есть модель TicketType, есть модель Area, есть пивотная таблица ticket_type_additional_areas с полями area_id, ticket_type_id. Есть метод в моделе TicketType для определения связи между можелями ` public function additionalAreas() { return $this->belongsToMany(Area::class, 'ticket_type_additional_areas', 'area_id', 'ticket_type_id'); } ` В таблице есть нужные значения для полей area_id и ticket_type_id. Но по вызову этой связи имею пустую коллекцию. Что я делаю не так?
Oleksii
поменял уже. Но все равно пустая коллекция прилетает
Dmitry
XpycT
поменял уже. Но все равно пустая коллекция прилетает
пробовал в запрос добавить ->with('additionalAreas') ?
Максим
Привет, подскажите лучший способ добавления Job в очередь каждый час?
Максим
крон? :)
Крон, супервизор
Максим
Стоит ли использовать стандартный Task Scheduling или в крон руками лучше добавить и все?
Dmitry
Стоит ли использовать стандартный Task Scheduling или в крон руками лучше добавить и все?
так там так и так добавлятся в крон общий скрипт. а внутри него уже вызывается то что надо. Что бы для каждой задачи не создавать новую запись в кроне
Максим
хотя зачем тогда вообще очередь, не особо понятно )))
Процесс который выполняется в таске требует очереди
Dmitry
Процесс который выполняется в таске требует очереди
ммм... не оч понятно зачем он ее требует? запустил крон раз в час, и он нормально все делает, без очереди . Хотя наверное есть какие то юз кейсы....
Максим
Да, есть кейсы Спасибо буду требовать крон короче.. но админы против
Dmitry
Да, есть кейсы Спасибо буду требовать крон короче.. но админы против
можно еще запушить кучу задач с отсроченным исполнением. Или каждая задача будет в конце выполнения добавлять себя в очередь с отсрочкой
Максим
спасибо
Artem
Всем привет. Ребят, нужна помощь. Вопрос не совсем по laravel, вернее вообще не по нем.) Есть скрипт, он должен выдать echo и продолжить работу. на локалке было так: ob_end_clean(); header("Connection: close"); ignore_user_abort(); ob_start(); echo "test"; $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); // дальше идет скрипт. но на серваке так не работает. есть какие-то аналоги, может кто-то занет? спасибо.
Artem
проверяли, включен он, значение там стоит - 4096
XpycT
возможно стоит попробовать поиграться с параметрами ob_start, скорее всего он буффер чистит не дожидаясь окончания скрипта
Artem
окей, сейчас гляну, спасибо
Георгий
Привет! Можно ли отменить запрос with, если foreignKey в BelongsTo равен null?
Dmitry
Привет! Можно ли отменить запрос with, если foreignKey в BelongsTo равен null?
в смысле отменить, если связи нет, он просто ничего не вернет
Георгий
в смысле отменить, если связи нет, он просто ничего не вернет
Да, но при этом он выполнит запрос where foreignKey in(''). Хочу от него избавиться.
Dmitry
Да, но при этом он выполнит запрос where foreignKey in(''). Хочу от него избавиться.
навряд ли ты от него избавишься. да и не затратный он
Anonymous
q
Георгий
навряд ли ты от него избавишься. да и не затратный он
Спасибо за помощь. Пришлось сделать load после запроса.
Dmitry
Спасибо за помощь. Пришлось сделать load после запроса.
а как он вроде тоже запрос создает, или нет?
Георгий
Да, если проходит проверку. Я сначала делаю $model = Model::with()->find($id), а пото делаю if(!is_null($model->foreignKey) $model->load('...'). А в своем вопросе я хотел это реализовать в пределах первого with
Anonymous
Подскажите пожалуйста, подготовил сообщение с помощью MailMessage объекта, а как его теперь отправить?
Alex
Подскажите пожалуйста, подготовил сообщение с помощью MailMessage объекта, а как его теперь отправить?
Mail::send('email.activate', ['email' => $email], function ($message) use ($email) { $message->to($email)->subject('Hello'); });
Anonymous
$message - это объект MailMessage?
Anonymous
все понял спасибо большое)
Artem
Ребят, для чего делают комбинацию Nginx+apache?
SarcasmIO
nginx под статику, допустим
SarcasmIO
тот же прокси или лоадбалансер
David
Скиньте ссылку плж на телеграм группу с vue.js
Oleh
https://t.me/vuejs_ru
David
благодарю
Dmitry
Ребят, для чего делают комбинацию Nginx+apache?
для обработки php. Мне например htaccess как то роднее, никак не могу привыкнуть к настройкам редиректов на nginx/ Там кстати это реально настраивать из папки с проектом?
Anonymous
теоретически если есть доступ к конфигу виртуалхоста, можно прописать include /путь/до/папки/сайта/myconf.conf но не пробовал так
Vitaliy
парни немного не по теме, но все же, как подружить escape и serialize
Vitaliy
а то на выходе получается не сериализованная строка, тоесть unserialezie уже на html код не работает
Vitaliy
вот такая дичь при использовании такого подхода, сори за скрин, для ясности
Vitaliy
да но как мне теперь данные нормальные то достать?
Dmitry
назад unserialezie делай
Vitaliy
тогда ошибку при unserialize html сущностей получаю
Dmitry
т.е. ты к этому тексту применяешь unserialezie и получаешь ошибку?
Vitaliy
если ко всему этому что на скрине то да
Dmitry
какая ошибка? покажи
Vitaliy
unserialize(): Error at offset 1008 of 1468 byte
Vitaliy
а упаковка происходит в escape(serialize($data))