Моя цель для них - сделать автозаполнение вводимого текста для местоположения. Когда я набираю что-то вроде "streetNo", "city" или "country", соответствующие данные должны возвращать

Я только что создал необработанный столбец «full_address», объединяющий столбцы «streetNo», «city» и «country».

Вот мой код:

$searchAddress = $r->input('address'); //dynamic

$profile = DB::table('student')
    ->select(
        'students.id',
        'students.name',
        'students.class',
        'students.schedule',
        'inf.streetNo',
        'inf.city',
        'inf.country',
        DB::raw("(CONCAT(inf.streetNo,' ',inf.city,' ',inf.country)) AS full_address")
    )
    ->where('full_address', 'LIKE', "%{$searchAddress}%")
    ->join('informations AS inf', 'inf.student_id', 'students.id')
    ->get();

Я попытался выполнить поиск в существующих данных, например "город или страна", но данные не вернулись. Я подозреваю, что что-то не так с "откуда" данные.

Вопрос: можем ли мы «где» использовать временный столбец, например «столбец full_address», как в приведенном выше коде? Потому что я попробовал этот код, и данные не вернулись, хотя на самом деле

Нужна ваша помощь, господа ..

0
gecko 23 Мар 2019 в 18:19

1 ответ

Лучший ответ

Есть решение !!

Я пробую по-разному, как "где" необработанный столбец , но данные не возвращаются, поэтому я предполагаю, что этот код ->where('full_address', 'LIKE', "%{$searchAddress}%") это синтаксическая ошибка.

Мы не можем использовать предложение where для необработанных столбцов , таких как full_address.

Итак, что я сделал : я больше не создавал необработанный столбец, такой как «full_address», вместо этого я напрямую «где» DB :: Raw

Смотрите мой окончательный и рабочий коды:

$searchAddress = $r->input('address'); //dynamic

$profile = DB::table('student')
    ->select(
        'students.id',
        'students.name',
        'students.class',
        'students.schedule',
        'inf.streetNo',
        'inf.city',
        'inf.country'
    )
    ->where(DB::raw("CONCAT(inf.streetNo,' ',inf.city,' ',inf.country)), 'LIKE', "%{$searchAddress}%")
    ->join('informations AS inf', 'inf.student_id', 'students.id')
    ->get();
1
gecko 24 Мар 2019 в 09:29