Laravel объединяет таблицу с json с помощью MariaDB

#php #json #laravel #mariadb

#php #json #laravel #mariadb

Вопрос:

PHP 7.2

MariaDB 10.3.11

Laravel 5.5.45

https://github.com/beyondcode/laravel-vouchers/issues/10

Я использую этот пакет. Внутри vouchers таблицы есть поле data , в котором хранятся данные массива / json.

Тип vouchers таблицы внутри data поля — TEXT .

https://github.com/beyondcode/laravel-vouchers/blob/master/database/migrations/create_vouchers_table.php.stub

Например

{"customer_id":1,"customer_name":"Shiro","message":"Birthday Voucher"}

Таблица ваучеров:-

  ----- ----------- ----------------- ---------- -------------------------------------------------------------------------- --------------------- --------------------- --------------------- 
| id  | code      | model_type      | model_id | data                                                                     | expires_at          | created_at          | updated_at          |
 ----- ----------- ----------------- ---------- -------------------------------------------------------------------------- --------------------- --------------------- --------------------- 
| 170 | 1111-1112 | AppVoucherType |        2 | {"customer_id":"1","customer_name":"Shiro","message":"Birthday Voucher"} | 2019-04-30 23:59:59 | 2019-03-20 04:58:12 | 2019-03-20 04:58:12 |
 ----- ----------- ----------------- ---------- -------------------------------------------------------------------------- --------------------- --------------------- --------------------- 
  

Таблица клиентов

  ------ ---------------------------------------------- ---------------------- 
| id   | user_name                                    | email                |
 ------ ---------------------------------------------- ---------------------- 
| 1    | AMAZON BEAUTY SUPPLY - BEAUTIFUL LADYGAGA HA | beautifyfu@gmail.com |
 ------ ---------------------------------------------- ---------------------- 
  

Я хотел бы присоединиться к моей customers таблице.

Я пытался https://github.com/ybr-nx/laravel-mariadb , но все еще не могу напрямую присоединиться к таблице.

Есть идеи, как объединить две таблицы и одну из таблиц, используя поле json?

Комментарии:

1. Каков тип данных data ?

2. Необходимо ли объединять таблицу customers с вашей таблицей ваучеров через json? что вы можете сделать, так это сохранить customer_id в другом столбце таблицы ваучеров при сохранении вашего json, а затем создать простое объединение.

3. тип данных @revo — это TEXT , я добавил ссылку. @Osama Alvi, причина, по которой я не добавил дополнительный столбец, в том, что я стараюсь не изменять структуру их базы данных, и они не просто так это сделали. Я думаю, что в основном я создам другое поле, не нужно тратить время… но я думаю, что у меня есть идея получше, чтобы улучшить мое кодирование

4. привет @ Shiro, ты когда-нибудь заставлял это работать?