Использование разделенной в concat функции в запросе mysql - PullRequest
0 голосов
/ 11 июля 2019

Используя этот запрос, я добавлю идентификатор пользователя в таблицу, но он будет вставлен непрерывно, которым я хочу отделить, plz предлагает изменить запрос

 DB::table('table_user_create_activity')
               ->where(['activity_id'=>$query_get_activity->activity_id])
              ->update(['accepted_join_id'=>DB::raw('CONCAT(ifnull(accepted_join_id,""),'.$get_user_id.')')]);

Ответы [ 3 ]

0 голосов
/ 11 июля 2019

Надеюсь, что это решит вашу проблему

DB::table('table_user_create_activity')
    ->where([ 'activity_id' => $query_get_activity->activity_id ])
    ->update([
        'accepted_join_id' => DB::raw("CONCAT(ifnull(accepted_join_id,''), ',' , $get_user_id)")
    ]);
0 голосов
/ 11 июля 2019

DB :: таблица ( 'table_user_create_activity') -> где ([ 'activity_id' => $ query_get_activity-> activity_id]) -> обновление ([ 'accepted_join_id' => DB :: сырец ( 'CONCAT (IFNULL (NULL, accepted_join_id)) ')]) '$ get_user_id..';

0 голосов
/ 11 июля 2019

Проблема в вашем DB::raw операторе SQL.Вы используете MySQL concat, но этот метод не добавляет разделитель.Для добавления разделителя используйте concat_ws (ws = with separator), а затем первый аргумент - ваш разделитель.

->update(['accepted_join_id'=>DB::raw("CONCAT_WS(',', ifnull(accepted_join_id,''),".$get_user_id.')')])

sidenote, ваш запрос открыт для SQL-инъекций, поскольку $get_user_id добавлено в DB::raw.Чтобы закрыть внедрение SQL, измените его на следующее.

->update(['accepted_join_id'=>DB::raw("CONCAT_WS(',', ifnull(accepted_join_id,''),?)", [$get_user_id])])

Таким образом мы экранируем идентификатор пользователя перед добавлением его в запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...