Я попытался умножить 2 столбца в одной таблице и напрямую использовать результат в выражении where в laravel

Код:

$contributions = 
  auth()->user()->cooperative->contributions->where("amount", "<", 'amount * shares');

Но это не возвращает требуемых результатов. Как я могу умножить сумму и доли, они из одной таблицы и используют свои продукты.

Не могли бы вы объяснить, какие именно требуются результаты? Я уверен, что умножение работает, но если доля равна 1 или меньше, условие всегда верно.

Sami Kuhmonen 21.02.2019 16:41

Да в акциях есть 1

mucyo alain 21.02.2019 16:47

Так как же сумма может быть меньше, чем сумма когда-либо? Пожалуйста, объясните, чего именно вы хотите достичь.

Sami Kuhmonen 21.02.2019 16:51

Я изменился. У меня есть 2 разные таблицы, одна для вклада с суммой денег, которую дал член, и его / ее акции, а другая таблица с требуемой суммой в месяц. Теперь я хочу умножить требуемую сумму из таблицы сумм на доли из таблицы взносов и использовать их результат в утверждениях where для сравнения с фактическим вкладом.

mucyo alain 21.02.2019 17:01

Пожалуйста, отредактируйте вопрос и добавьте туда всю информацию, включая определения таблиц, образцы данных, желаемые результаты и т. д.

Sami Kuhmonen 21.02.2019 17:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
95
2

Ответы 2

Оберните свое состояние фигурными скобками, и оно должно работать нормально. как показано ниже:

$contributions = auth()->user()->cooperative->contributions->where("amount", "<", '(amount * shares)'); 

Надеюсь, это поможет вам.

Не могли бы вы объяснить, почему это может помочь? Как это меняет ситуацию?

Sami Kuhmonen 21.02.2019 17:04

Как вы думаете, это дает другой результат?

Phuc Lam 22.02.2019 09:29

да, это дало другой результат, который я тестировал. Попробуйте сами и дайте мне знать, если это не имеет никакого значения.

Rohit Mittal 22.02.2019 09:59

Когда вы делаете:

...->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'));

Надеюсь это поможет. Для получения дополнительной информации проверьте документация

Другие вопросы по теме