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






попробуй это
$query = DB::table('mbo_party')->where(DB::raw("CONCAT(first,' ',last)"), 'LIKE', '%' . $party_name . '%')->first();
Что вы изменили? ("CONCAT(first," выглядит как недопустимый PHP.
Отображается ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '", последний)"' (T_CONSTANT_ENCAPSED_STRING), ожидающий ',' или ')'
Он не показывает никаких ошибок, но при выполнении echo $ query не возвращает никакого значения, я хочу сказать echo "<pre>"; print_r ($ query); die; показывает пустую страницу
Добро пожаловать, @iamawesome
Это должно работать:
$query = DB::table('mbo_party')->whereRaw('CONCAT(`first`," ",`last`) = "' . $party_name . '"'))->first();
Возможный дубликат Laravel concat в запросе (где условие)