Size: a a a

Laravel Framework Russian Community

2020 October 19

AY

Artyom Yun in Laravel Framework Russian Community
Переслано от Artyom Yun
Не подскажете, в чем может быть проблема? На одной странице Auth::user() отдаёт инфу про юзера(для аутентификации использую attemp), перехожу на другую страницу, там уже Auth::user()  NULL
источник

AM

Alexander Milevsky in Laravel Framework Russian Community
Здравствуйте, посоветуйте как лучше реализовать
Нужно вытащить сумму успешных платежей во вложенном отношении

Вот мое текущее решение:

public function scopeWithCompletedPayments($query)
{
   return $query->with(['leads.orders.payment' => function ($q) {
       return $q->where('status', OrderPayment::STATUS_COMPLETED);
   }]);
}

foreach ($lead->orders as $order) {
   $payment = $order->payment;
   $partner->sales_sum += $payment->price;
}
источник

MG

Murad Guzhaev in Laravel Framework Russian Community
Artyom Yun
Переслано от Artyom Yun
Не подскажете, в чем может быть проблема? На одной странице Auth::user() отдаёт инфу про юзера(для аутентификации использую attemp), перехожу на другую страницу, там уже Auth::user()  NULL
В шаблонах blade ?
источник

AY

Artyom Yun in Laravel Framework Russian Community
Murad Guzhaev
В шаблонах blade ?
Нет, в другом контроллере
источник

MG

Murad Guzhaev in Laravel Framework Russian Community
Artyom Yun
Нет, в другом контроллере
Возможно я ошибаюсь, проблема скорее в  middleware. StartSession не распространяется на твой другой контроллер, проверь попадает ли твой контроллер под ['middleware' => 'web'], там где ты прописываешь роуты
источник

AY

Artyom Yun in Laravel Framework Russian Community
У меня api
источник

AY

Artyom Yun in Laravel Framework Russian Community
Секунду
источник

D

Dymon in Laravel Framework Russian Community
Alexander Milevsky
Здравствуйте, посоветуйте как лучше реализовать
Нужно вытащить сумму успешных платежей во вложенном отношении

Вот мое текущее решение:

public function scopeWithCompletedPayments($query)
{
   return $query->with(['leads.orders.payment' => function ($q) {
       return $q->where('status', OrderPayment::STATUS_COMPLETED);
   }]);
}

foreach ($lead->orders as $order) {
   $payment = $order->payment;
   $partner->sales_sum += $payment->price;
}
попробуй
withCount(['leads.orders.payment as sales_sum' => function($query) {
   $query->select(DB::raw('sum(price)'))
    ->where('status', OrderPayment::STATUS_COMPLETED);
}])
но это не точно.
источник

A

Anton in Laravel Framework Russian Community
Alexander Milevsky
Здравствуйте, посоветуйте как лучше реализовать
Нужно вытащить сумму успешных платежей во вложенном отношении

Вот мое текущее решение:

public function scopeWithCompletedPayments($query)
{
   return $query->with(['leads.orders.payment' => function ($q) {
       return $q->where('status', OrderPayment::STATUS_COMPLETED);
   }]);
}

foreach ($lead->orders as $order) {
   $payment = $order->payment;
   $partner->sales_sum += $payment->price;
}
А скоуп как относится к этому решению - его же нет в цикле? И почему просто не сделать одним запросом в базу?
источник

AM

Alexander Milevsky in Laravel Framework Russian Community
Anton
А скоуп как относится к этому решению - его же нет в цикле? И почему просто не сделать одним запросом в базу?
хотелось бы в контроллере получить нечто такое:
$partners = Partner::query()
   ->withCount('leads')
   ->withSumPayments();
$partners = $partners->get();

где у каждого записи будет сумма успешных платежей
источник

BF

Benjamin Franklin in Laravel Framework Russian Community
Всем привет, я скорей новичок! Очень необычное дело.
https://paste.ofcode.org/ENUE6kVK7sDNJvesAphKRc
Буду признателен.
источник

ОР

Олег Робопрогер... in Laravel Framework Russian Community
@xbxbxxvxcb нужно ж проверить, присутствует ли у человека монеты, перед тем как создавать. У вас человек может указать 9999, и создаться запись с 9999 монетами. а Потом у вас идет вычисления. вы либо оберните в транзакцию либо сделайте по другому
источник

BF

Benjamin Franklin in Laravel Framework Russian Community
@wotacoma Большое спасибо, попробую.
источник

ОР

Олег Робопрогер... in Laravel Framework Russian Community
причем у вас 2 раза вызывается Auth::user()
источник

BF

Benjamin Franklin in Laravel Framework Russian Community
Хотя вот проверяется перед всеми действиями
if ($amount > $user->money)
   {
       flash()->error( 'Sorry, not enough coins to make this transaction.' );
       return redirect()->back();
   }

Может нужно всего лишь обернуть действия после в транзакцию
источник

ОР

Олег Робопрогер... in Laravel Framework Russian Community
@xbxbxxvxcb может тогда у вас проблема в другом месте?
источник

BF

Benjamin Franklin in Laravel Framework Russian Community
Может и так
источник

ОР

Олег Робопрогер... in Laravel Framework Russian Community
смотрите везде где есть взаимодействие по добавлению и удалению монет
источник

BF

Benjamin Franklin in Laravel Framework Russian Community
Посмотрим, спасибо
источник

Е

Евгений in Laravel Framework Russian Community
Всем привет, почему не ставится jetstream?
источник