Код:
$contributions =
auth()->user()->cooperative->contributions->where("amount", "<", 'amount * shares');
Но это не возвращает требуемых результатов. Как я могу умножить сумму и доли, они из одной таблицы и используют свои продукты.
Да в акциях есть 1
Так как же сумма может быть меньше, чем сумма когда-либо? Пожалуйста, объясните, чего именно вы хотите достичь.
Я изменился. У меня есть 2 разные таблицы, одна для вклада с суммой денег, которую дал член, и его / ее акции, а другая таблица с требуемой суммой в месяц. Теперь я хочу умножить требуемую сумму из таблицы сумм на доли из таблицы взносов и использовать их результат в утверждениях where для сравнения с фактическим вкладом.
Пожалуйста, отредактируйте вопрос и добавьте туда всю информацию, включая определения таблиц, образцы данных, желаемые результаты и т. д.






Оберните свое состояние фигурными скобками, и оно должно работать нормально. как показано ниже:
$contributions = auth()->user()->cooperative->contributions->where("amount", "<", '(amount * shares)');
Надеюсь, это поможет вам.
Не могли бы вы объяснить, почему это может помочь? Как это меняет ситуацию?
Как вы думаете, это дает другой результат?
да, это дало другой результат, который я тестировал. Попробуйте сами и дайте мне знать, если это не имеет никакого значения.
Когда вы делаете:
...->contributions->where("amount", "<", 'amount * shares');
Laravel не будет знать, что amount и shares являются столбцами одной и той же таблицы. Он будет полностью рассматривать amount * shares как строку.
Чтобы laravel рассматривал это как синтаксис MySQL, вы можете использовать whereRaw :
...->contributions->whereRaw('amount < amount * shares');
Другой способ - использовать whereColumn :
...->contributions->whereColumn('amount', '<', \DB::raw('amount * shares'));
Надеюсь это поможет. Для получения дополнительной информации проверьте документация
Не могли бы вы объяснить, какие именно требуются результаты? Я уверен, что умножение работает, но если доля равна 1 или меньше, условие всегда верно.