Я хотел объединить таблицу NotificationTypes с UserEnabledNotificationTypesId в столбце NotificationTypesId таблицы UserEnabledNotifications только для строк, в которых столбец deleted_at таблицы NotificationTypes нулевой. Я пробовал, как показано ниже. Но это не сортировка по значению null столбца deleted_at в таблице NotifocationTypes. Какие-нибудь решения?

UserEnabledNotifications::with('userNotications', function ($query){
    $query->whereNull('deleted_at');
})->select('userId','notificationTypesId')->get();

UserEnabledNotifications

public function userNotifications(){
  return $this->belongsTo(NotificationTypes::class, 'notificationTypesId','id');
}
-1
Mer Geo 14 Окт 2021 в 15:32

2 ответа

Лучший ответ

Вам нужно передать with / closure как пару ключ / значение массива

UserEnabledNotifications::with(['userNotifications' => function ($query){
    $query->whereNull('deleted_at');
}])->select('userId','notificationTypesId')->get();

Чтобы получить только UserEnabledNotifications, у которых есть userNotifications, которые не были удалены, вам понадобится где есть

UserEnabledNotifications::whereHas('userNotifications', function(Builder $query) {
    $query->whereNull('deleted_at');
})
    ->with(['userNotifications' => function($query) {
        $query->whereNull('deleted_at');
    }])->select('userId', 'notificationTypesId')->get();
0
aynber 14 Окт 2021 в 13:13

Попробуйте выполнить этот запрос заменить столбец фактическим столбцом . Нет необходимости проверять значение NULL для deleted_at. По умолчанию будет проверяться NULL.

UserEnabledNotifications::with(['userNotifications', function ($query){
    $query->orderBy('column', 'ASC');
}])->select('userId','notificationTypesId')->get();

Дайте мне знать результаты.

0
Vivek Pawar 14 Окт 2021 в 13:14