Как использовать "CONCAT" в laravel where clause без использования модели

У меня есть таблица ('mbo_party'), в которой есть два столбца: первый и последний (я использовал первый для хранения имени, последний для хранения фамилии). Предположим, я храню Дебанджана в столбце «первый», а Гангули - в столбце «последний». Итак, в поле поиска, если один поиск по «Дебанджан Гангулы», как мне получить все данные из этого столбца. Я использую laravel 5.4, я не использую никакой модели. Пишу запрос в свой контроллер. Вот мой код пока ...

Контроллер

    $party_name = $request->get('party_name');
        $query = DB::table('mbo_party')->where('concat(first," ",last)' , '=' , $party_name)->first();

Вид

    <form id = "party_search_it" method = "GET" action = "{{route('mbo-index')}}"> 
        {{ csrf_field() }}
        <input type = "text" class = "form-control" name = "party_name" placeholder = "Search for Party Name..." autocomplete = "off">
    </form>

Мой вид таблицыВот мой вид таблицы

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

    echo"<pre>";print_r($query);die;

Я хочу знать, каков правильный синтаксис для выполнения такой операции

Возможный дубликат Laravel concat в запросе (где условие)

JRoss 29.09.2018 15:10

нет, я хочу использовать его через метод DB :: table ('mbo_party') -> where (), без использования модели, хочу знать правильный синтаксис для этого.

iamawesome 29.09.2018 15:29

DB :: raw in where () является ключевым здесь человеком. Тот же вопрос, разные методы, одно и то же решение.

JRoss 29.09.2018 15:36

как узнать, какую таблицу я использую тогда ??

iamawesome 29.09.2018 15:44

$ query = DB :: table ('mbo_party') -> где (DB :: raw ('concat (first, "", last)'), '=', $ party_name) -> first (); Точно так же, как Sunil kumawat anwser и то же решение, что и дублированная страница ... Он использует LIKE вместо =, это единственное отличие. Протестировано на моей установке laravel (изменено имя таблицы и столбцы, чтобы соответствовать моим), но работает. Почему бы вам не попробовать dd ($ query) в строке после, чтобы увидеть, что именно возвращается?

JRoss 29.09.2018 15:58

Спасибо, Росс, у меня это отлично сработало

iamawesome 29.09.2018 16:00
Стоит ли изучать 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
6
971
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

попробуй это

$query = DB::table('mbo_party')->where(DB::raw("CONCAT(first,' ',last)"), 'LIKE', '%' . $party_name . '%')->first();

Что вы изменили? ("CONCAT(first," выглядит как недопустимый PHP.

user3783243 29.09.2018 15:23

Отображается ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '", последний)"' (T_CONSTANT_ENCAPSED_STRING), ожидающий ',' или ')'

iamawesome 29.09.2018 15:23

Он не показывает никаких ошибок, но при выполнении echo $ query не возвращает никакого значения, я хочу сказать echo "<pre>"; print_r ($ query); die; показывает пустую страницу

iamawesome 29.09.2018 15:38

Добро пожаловать, @iamawesome

Sunil kumawat 29.09.2018 16:48

Это должно работать:

$query = DB::table('mbo_party')->whereRaw('CONCAT(`first`," ",`last`) = "' . $party_name . '"'))->first();

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