Попытка получить отфильтрованные значения, используя laravel, но не работает должным образом, неверный результат - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть users таблица и subscriptions таблица.

subscriptions таблица имеет столбец внешнего ключа user_id и другой столбец status типа enum и имеет набор значений ('canceled','active','skipped','unpaid','pastdue','expired')

В модели я определил их отношение следующим образом:

public function subscription()
{
    return $this->hasMany(Subscription::class);
}

Теперь я реализую функциональность фильтра

в этой функции в моем классе dataTable

public function query(User $model)
{
    if ($this->_filters['subscription_status']) {
        $status = $this->_filters['subscription_status'];

        $model = $model->whereHas('subscription', function($query) use ($status) {
            $query->where('status', $status);
        });
    }

Теперь, когда я попытался получить список пользователей со статусом подписки canceled

результат, я получил список пользователей со статусами active и cancelled, почему приведенный выше код не 'т работа?

1 Ответ

0 голосов
/ 05 декабря 2018

Вы должны использовать with, а не has.Вы можете увидеть разные.

получить список пользователей с статусом подписки отменено

$model = $model->with(['subscription' => function ($query) use ($status) {
    $query->where('status', status);
}])

получить список пользователей имеет статус подписки отменено

$model = $model->whereHas('subscription', function($query) use ($status) {
    $query->where('status', $status);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...