У меня есть две mysql таблицы. Первая таблица theme_images содержит изображения по умолчанию для данной темы. Вторая таблица custom_theme_images содержит пользовательские изображения, которые пользователь загружает для переопределения данного изображения по умолчанию в таблице тем.
Две таблицы связаны между собой с помощью поля them_image_id в custom_theme_images. Кроме того, каждый пользователь идентифицируется уникальным user_business_id , поскольку разные пользователи могут переопределить одно и то же изображение в своем профиле, если они используют одну и ту же тему. Структура выглядит следующим образом:
Все, что я хочу, это иметь возможность отображать все записи в таблице theme_images с изображениями по умолчанию, но если данный пользователь переопределил изображение в таблице custom_theme_image , то вместо изображения по умолчанию должно отображаться пользовательское изображение.
Что я пробовал
Я пробовал внутренние, левые и правые соединения, но они возвращают только те поля, которые соответствуют только в обеих таблицах, но я также хочу значения по умолчанию, если пользователь не переопределил изображение.
Затем я решил получить два разных результата из двух таблиц, и я пытаюсь объединить их и удалить дубликаты. Один результат содержит все пользовательские изображения данного профиля и темы, а второй содержит все значения по умолчанию. Код в Laravel стиле
Код
<tbody>
@php
$tally=1;
@endphp
@foreach($custom_theme_image as $custom_image)
<tr>
<td>{{$custom_image->theme_image_id}}</td>
<td>{{$custom_image->theme_image->description ?? 'n/a'}}</td>
<td>
<img src="storage/{{$custom_image->image}}" class="w-100 " style="max-width: 75px;"/>
</td>
<td> <a href="/theme-images/{{$custom_image->theme_image_id}}/create"><span class="badge bg-primary mr-2">Update</span></a></td>
</tr>
@endforeach
@foreach($theme_images as $theme_image)
<tr>
<td>{{$theme_image->id}}</td>
<td>{{$theme_image->description ?? 'n/a'}}</td>
<td>
<img src="{{asset('previewThemes')}}/{{$theme_image->theme->name}}/{{$theme_image->image}}" class="w-100 " style="max-width: 75px;"/>
</td>
<td> <a href="/theme-images/{{$theme_image->id}}/create"><span class="badge bg-primary mr-2">Change</span></a></td>
</tr>
@php
$tally=$tally+1;
@endphp
@endforeach
</tbody>
Результаты этих двух запросов определенно содержат дубликаты, то есть
Два результата foreach: верхние результаты - это пользовательские изображения, нижние - результат изображения по умолчанию. Теперь все, что мне нужно, - это объединить эти дубликаты, чтобы показать пользовательские изображения, но при этом сохранить другие записи изображений по умолчанию ... Окончательные идентификаторы должны отображаться как 3,4,5,6,7 ... с 3,4,5 показ пользовательского изображения и 6,7 показ изображений по умолчанию
В этом случае:
user_business_id = 2 theme_id = 2