Nano Hash - криптовалюты, майнинг, программирование

Проблема с запросом переменной Eloquent в Laravel

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

На данный момент я использую в своем контроллере следующее:

    if(empty($_GET['direction'])){
        $direction = "'LIKE', '%'";
        } else if ($_GET['direction'] === 'Inbound') {
        $direction = "'>', 1";
        } else if ($_GET['direction'] === 'Outbound'){
        $direction = "'=', 1";
    }

Теперь я добавил $direction постфактум, и каждый тест показывает, что он точно выбрал правильный параметр переменной с учетом значения $_GET['direction'].

Моя проблема заключается в том, как я либо вывожу его туда, либо ввожу результаты в следующем разделе:

$manifests = DB::table('carrier_manifests')
        ->join('customers', 'carrier_manifests.carrierOrigin', '=', 'customers.id')
        ->select('carrier_manifests.*', 'customers.customer_name')  

        ->where([
                    ['manifestNumber', 'LIKE', '%' . $manifest . '%'],
                    ['originTerminal','LIKE','%' . $terminal . '%'],
                    ['carrierOrigin', $direction],
                ])
        ->orderBy('dateUnloaded', 'DESC')
        ->whereBetween('dateUnloaded', [$startDate, $endDate])
        ->limit(100)
        ->get();

Теперь, прежде чем я продолжу, я скажу, что здесь все работает правильно и уже какое-то время, когда добавляются carrierOrigin и $direction, возникает проблема.

Например, если я оставлю поле direction пустым на странице, переменная $direction будет установлена ​​равной "'LIKE', '%'".

К сожалению, в предложении where это не отправляется хорошо или что-то в этом роде, так как не возвращает никаких результатов, но в качестве теста, если я изменю эту строку:

['carrierOrigin', $direction],

to

['carrierOrigin','LIKE','%'],

он успешно возвращает все результаты. Итак, есть ли другой способ форматирования вывода или отправки вывода?


  • Что вам нужно сделать, так это передать оператор и значение как отдельные параметры в конструктор, где вы сейчас говорите, что LIKE % является значением. 25.05.2018

Ответы:


1

Вы передаете строку как второй и третий аргументы. Используйте это в контроллере:

if(empty($_GET['direction'])){
    $direction = ['LIKE', '%'];
    } else if ($_GET['direction'] === 'Inbound') {
    $direction = ['>', 1];
    } else if ($_GET['direction'] === 'Outbound'){
    $direction = ['=', 1];
}

Затем по запросу:

$manifests = DB::table('carrier_manifests')
    ->join('customers', 'carrier_manifests.carrierOrigin', '=', 'customers.id')
    ->select('carrier_manifests.*', 'customers.customer_name')  

    ->where([
                ['manifestNumber', 'LIKE', '%' . $manifest . '%'],
                ['originTerminal','LIKE','%' . $terminal . '%'],
                ['carrierOrigin', $direction[0], $direction[1],
            ])
    ->orderBy('dateUnloaded', 'DESC')
    ->whereBetween('dateUnloaded', [$startDate, $endDate])
    ->limit(100)
    ->get();
25.05.2018
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..