У меня проблема с запросом. У меня есть куча машин, и есть типы машин. Для каждого типа пользователь может выбрать один автомобиль, и я сохраняю это в базе данных. Когда я хочу получить данные, у меня возникают проблемы:
[
{
"id_typecar": 1,
"nom_typecar": "Type17",
"id_car": 14,
"id_user": 3,
"cars": [
{
"id_car": 1,
"nom_car": "775",
}
},
{
"id_car": 2,
"nom_car": "048",
}
]
},
{
//Not displayed if user_id != 1 or null -> I want to display that
"id_typecar": 2,
"nom_typecar": "Type1",
"id_car": 13,
"id_user": 1, //expected output "id_user": null
"cars": [
{
"id_car": 11,
"nom_car": "123",
},
{
"id_car": 12,
"nom_car": "456,
},
{
"id_car": 17,
"nom_car": "789",
}
]
И мой запрос:
return TypeCars::with('cars')
->leftJoin('cars_user', 'cars_user.id', '=', 'type_cars.id')
->where('cars_user.id' = 1)
->orWhereNull('cars_user.id')
->get()
->toJson();
Я хотел получить данные, даже если id_user еще не существует, потому что я должен отображать типы и машины. Я добавил ограничение leftJoin с where "null" or where cars_user.userid = ?
, но если пользователь 3 выбрал один тип автомобиля, который не выбрал пользователь 1 (потому что он не будет иметь значение null или userid = 1), он больше не будет отображать автомобили.
Спасибо!
РЕДАКТИРОВАТЬ:
Фактическая выработка:
+---------------------------------+
| id_typecar name_typecar id_user |
+---------------------------------+
| 1 Type1Car 14 |
| 2 Type2Car 13 |
| 2 Type2Car 13 |
| 3 Type3Car NULL |
+---------------------------------+
Ожидаемый результат:
+---------------------------------+
| id_typecar name_typecar id_user |
+---------------------------------+
| 1 Type1Car 14 |
| 1 Type1Car NULL | <-- needed for the display
| 2 Type2Car 13 |
| 2 Type2Car 14 |
| 3 Type3Car NULL |
| 3 Type3Car NULL |
+---------------------------------+
Если у меня нет этой строки, если пользователь 13 не указал ни одного автомобиля для этого типа, она не будет отображаться, поскольку пользователь 14 выбрал одну