Как использовать или на коллекции Laravel
У меня есть коллекция Laravel, где каждый элемент имеет ключевое action
и значение может быть "ручным", "автоматическим" и другими типами. Я пытаюсь получить все элементы, где action
либо "ручное", либо "автоматическое"
Я пытался следовать методу Laravel collection, но он ничего не возвращает.
$manualTransactions = $allTransactions
->where('action','Manual')
->where('action','Used');
Однако, если я попытаюсь сделать следующее, он вернет все элементы, где action
"ручное", а также если я заменю "ручное" на "используемое", он вернет все элементы, где action
"используется"
$manualTransactions = $allTransactions
->where('action','Manual');
Вопрос: Как получить все элементы, где action
"ручное" или "используется"? Я видел методы сбора Laravel, но не нашел ничего похожего на метод orWhere.


Ответы - Как использовать или на коллекции Laravel / How to use OR on Laravel Collection

24.12.2019 07:09:51
Вы можете либо использовать where():
$allTransactions->whereIn('action', ['Manual', 'Used']);
Или фильтр():
$allTransactions->filter(function ($item) {
return in_array($item->action, ['Manual', 'Used']);
});
Вышесказанное предполагает$item
является объектом, используйте $item['action']
, если это массив.

24.12.2019 08:26:46
Можно использовать whereIn
, поскольку при этом используется несколько данных, как это
$allTransactions->whereIn('action', ['Manual', 'Used']);
