1 пользователь имеет несколько заказов, обычно при этом заказы могут быть оплаченные и не оплаченные, поэтому Ваш
hasMany('orders', ['user_id' => 'id'])
просто возвращает массив заказов пользователя, что никак не свидетельствует об оплате.
Обычно в orders есть поле status_id, по которому и можно судить об оплате.
Поэтому предложенный вариант с
Model::find()->where('not in', 'id', [array_id])->all();
просто даст всех пользователей которые не создавали заказ.
Тогда для выбора пользователей с неоплаченными заказами поиск должен быть по таблице order которая имеет связь hasOne с USER, например:
$order = Order::find()->andWhere(['status_id'=>0])->all();
$users = ArrayHelper::getColumn($order,'user');
print_r($users);