Laravel Eloquent Получение много ко многим отношениям в условиях поля сводной таблицы - PullRequest
1 голос
/ 15 апреля 2020

У меня проблема с Laravel 7 Eloquent. У меня есть 2 таблицы, соединенные many to many relation. Пользователь таблицы подключен к PaymentModule с помощью pivot таблицы PaymentModuleUser. Мне нужно использовать where в сводной таблице в операторе is_active = 1. Когда я использую toSQL() в моей модели, SQL возвращает хорошие результаты, но когда я проверяю свой Eloquent Query in Controller, данные, которые я возвращаю, игнорируют мой метод wherePivot (возвращают все данные из таблицы, игнорирующие is_active = 1 field подписчики = ноль, и получают меня этот пользователь .. Я должен сделать это, если мой pivotWhere = null не показывает этого пользователя). Не могли бы вы указать мне, где я ошибаюсь с моим кодом?

Моя модель UserTable:

    public function subscriber(){
        return $this->belongsToMany(PaymentsModule::class, 'payment_module_user', 'user_id')->withPivot('is_active');
    }

MyController:

$users = User::with(['subscriber'=>function($query)
{
$query->wherePivot('is_active','=', 1);
}])->get();

print_r($users);

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Попробуйте с помощью

$users = User::with('subscriber' => function($query) {
    $query->where('payment_module_user.is_active', 1);
})->get();

print_r($users);

Сводная таблица уже объединена с eloquent, поэтому просто начните использовать ее

Найдена здесь .

0 голосов
/ 15 апреля 2020

В вашем контроллере попробуйте использовать это

$ query-> wherePivot ('is_active', 1);

Вместо

$ query-> wherePivot ( 'is_active', '=', 1);

...