fields() не работает в ActiveController

Всё что касается построения API
Ответить
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

fields() не работает в ActiveController

Сообщение arser »

Полный код rest контроллера:

Код: Выделить всё

<?php
class PartnerController extends ActiveController {

    public $modelClass = 'app\models\Partner';

    public function fields()
    {
        return ['id', 'email'];
    }
}
 
Запрос /api/partners возвращает ВСЕ поля из таблицы partner (судя по всему fields() даже не вызывается). Я ожидал там увидеть только id и email.
Где я туплю?
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: fields() не работает в ActiveController

Сообщение arser »

так работает, но это не то:
/api/partners?fields=id,email
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: fields() не работает в ActiveController

Сообщение lynicidn »

фиелдс для модели, а не контроллера @see [[toArray()]]
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: fields() не работает в ActiveController

Сообщение arser »

спасибо :D
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: fields() не работает в ActiveController

Сообщение arser »

А как вы поступаете, если нужно загрузить большой объем данных, например, таблица 10к юзеров? Фильтры, пагинация, сортировка на сервере или клиенте?

Я попробовал оба варианта. И в прицепи загрузка даже всей таблицы сразу работает приемлемо, правда, без AR, зато потом все летает на клиенте (это и просят заказчики). Но может это совсем не по фэн-шуй и не стоит так делать?
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: fields() не работает в ActiveController

Сообщение lynicidn »

почитайте по рест, все уже придумано за нас https://github.com/yiisoft/yii2/blob/ma ... k-start.md
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: fields() не работает в ActiveController

Сообщение arser »

Читал конечно, ну то есть делать все на сервере и не заниматься ерундой? :)
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: fields() не работает в ActiveController

Сообщение lynicidn »

верно, датапровайдер позаботится об этом
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: fields() не работает в ActiveController

Сообщение lynicidn »

если вы хотите повлиять на изменение кол-ва элементов. то вы можете через get параметры https://github.com/yiisoft/yii2/blob/ma ... hp#L81-L90
arser
Сообщения: 36
Зарегистрирован: 2011.03.22, 15:55

Re: fields() не работает в ActiveController

Сообщение arser »

Это все понятно, вопрос в другом. У нас есть варианты:
- загрузить все данные на клиент, и потом шустро с ними работать
- или дергать сервер на каждое действие пользователя
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: fields() не работает в ActiveController

Сообщение lynicidn »

это вам надо про рест читать, это не тру пачками загружать
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: fields() не работает в ActiveController

Сообщение zelenin »

arser писал(а): - загрузить все данные на клиент, и потом шустро с ними работать
загрузить три миллиона записей и шустро с ними работать на клиенте?)
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: fields() не работает в ActiveController

Сообщение S c »

тогда можно всю бд выгрузить клиенту и алгоритм поиска тоже на клиента повесить))
Ответить