/ / Laravel об'єднайте дві таблиці на Json Column - php, mysql, laravel

Ларавел приєднується до двох таблиць у колоні Json - php, mysql, laravel

У мене є дві таблиці (моделі), в одній зі стовпцем json, який може містити ідентифікатор в іншій таблиці. Я хочу приєднатись до цих двох разом, як я ланцюжок laravel приєднатися до мого запиту.

Відповіді:

1 для відповіді № 1

Застосуйте логіку JSON всередині запиту приєднання, наприклад:

Post::select("posts.id", "posts.field1","posts.field2","samples.id as sample_id", ..)
->join("samples", "posts.json_col_name.id", "=", "samples.id")
->get();

Переконайтесь, що ви не створюєте конфлікту для конструктора запитів під час вибору стовпців (використовуйте field_name as another_name) коли обидві моделі мають поля із загальною назвою.


0 для відповіді № 2

Тож виявляється, що з'єднання не працювало, тому щостовпець json зберігав поле id як рядок, а ідентифікатор id об'єднаної таблиці зберігається як ціле число. Кастинг результату в ціле число зафіксовано це. Нехай "s say table" a "- це перша таблиця, яка містить стовпчик json з ідентифікатором другої таблиці, яка є таблицею" b ". Так я і зробив.

DB::table("a")->join("b","b.id",DB::Raw("CAST(a.data->"$.id" AS UNSIGNED)"))->get();