Как объединить две модели в одном запросе в REST?

Всё что касается построения API
Ответить
user
Сообщения: 59
Зарегистрирован: 2017.12.05, 16:55

Как объединить две модели в одном запросе в REST?

Сообщение user » 2017.12.05, 17:00

Есть две таблицы:
table1
table2
между ними есть связь много ко многим
Как сделать, чтобы при обращении к table1 выводить нужные поля из table1 и table2 применительно к rest?

user
Сообщения: 59
Зарегистрирован: 2017.12.05, 16:55

Re: Как объединить две модели в одном запросе в REST?

Сообщение user » 2017.12.05, 19:06

разобрался, но есть два нюанса:
1. при отправке $_POST запроса, приходится в адрес добавлять ?expand=table2
можно ли его запихнуть в тело запроса или заголовки?
2. возвращаются данные прописанные в fields второй модели, мне все не нужны, а только отдельные поля, как их отфильтровать?

Аватара пользователя
darlov
Сообщения: 190
Зарегистрирован: 2012.01.31, 16:09

Re: Как объединить две модели в одном запросе в REST?

Сообщение darlov » 2017.12.05, 19:12

1. Откуда отправляете?
2. Может использовать DTO?

user
Сообщения: 59
Зарегистрирован: 2017.12.05, 16:55

Re: Как объединить две модели в одном запросе в REST?

Сообщение user » 2017.12.05, 19:35

1.что ты имеешь ввиду?
2. ты спрашиваешь?

Аватара пользователя
darlov
Сообщения: 190
Зарегистрирован: 2012.01.31, 16:09

Re: Как объединить две модели в одном запросе в REST?

Сообщение darlov » 2017.12.05, 20:38

user писал(а):
2017.12.05, 19:35
1.что ты имеешь ввиду?
2. ты спрашиваешь?
1. Ты же отправляешь POST запрос, откуда исходят эти запросы, что из себя представляет та сторона (приложение, SPA) ?
2. Ну как бы предлагаю попробовать этот метод формирования данных, чтоб не загружать модели лишним кодом и отдавать данные с желаемой архитектурой.

user
Сообщения: 59
Зарегистрирован: 2017.12.05, 16:55

Re: Как объединить две модели в одном запросе в REST?

Сообщение user » 2017.12.05, 21:09

1. мобильное приложение
2. а какое отношение это имеет к моему вопросу?

Аватара пользователя
darlov
Сообщения: 190
Зарегистрирован: 2012.01.31, 16:09

Re: Как объединить две модели в одном запросе в REST?

Сообщение darlov » 2017.12.06, 07:14

user писал(а):
2017.12.05, 21:09
а какое отношение это имеет к моему вопросу?
Зачем тебе городить в модели логику для выборки определенных полей. А если тебе понадобится еще дополнительные данные или производить определенные вычисления, то твоя модель будет заметно толще. А потом все это надо как то поддерживать в рабочем состоянии. Не проще создать доп класс, с полями которые тебе нужны, заполнять их в конструкторе из моделей и отдавать.

surfer
Сообщения: 1
Зарегистрирован: 2016.09.29, 19:14

Re: Как объединить две модели в одном запросе в REST?

Сообщение surfer » 2017.12.06, 11:34

т.е. по моему вопросу ответить нечего

user
Сообщения: 59
Зарегистрирован: 2017.12.05, 16:55

Re: Как объединить две модели в одном запросе в REST?

Сообщение user » 2017.12.06, 11:35

darlov писал(а):
2017.12.06, 07:14
user писал(а):
2017.12.05, 21:09
а какое отношение это имеет к моему вопросу?
Зачем тебе городить в модели логику для выборки определенных полей. А если тебе понадобится еще дополнительные данные или производить определенные вычисления, то твоя модель будет заметно толще. А потом все это надо как то поддерживать в рабочем состоянии. Не проще создать доп класс, с полями которые тебе нужны, заполнять их в конструкторе из моделей и отдавать.
т.е. по моему вопросу тебе нечего ответить

Аватара пользователя
darlov
Сообщения: 190
Зарегистрирован: 2012.01.31, 16:09

Re: Как объединить две модели в одном запросе в REST?

Сообщение darlov » 2017.12.06, 12:08

user писал(а):
2017.12.06, 11:35
darlov писал(а):
2017.12.06, 07:14
user писал(а):
2017.12.05, 21:09
а какое отношение это имеет к моему вопросу?
Зачем тебе городить в модели логику для выборки определенных полей. А если тебе понадобится еще дополнительные данные или производить определенные вычисления, то твоя модель будет заметно толще. А потом все это надо как то поддерживать в рабочем состоянии. Не проще создать доп класс, с полями которые тебе нужны, заполнять их в конструкторе из моделей и отдавать.
т.е. по моему вопросу тебе нечего ответить
Во второй модели если прописать

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

public function fields()
{
    $fields = parent::fields();
    unset($fields['id']);
    return $fields;
}

user
Сообщения: 59
Зарегистрирован: 2017.12.05, 16:55

Re: Как объединить две модели в одном запросе в REST?

Сообщение user » 2017.12.06, 12:19

мне нужно чтобы при прямом обращении выбирать все, что задано в fields
а при обращении к первой фильтрованные данные

Аватара пользователя
darlov
Сообщения: 190
Зарегистрирован: 2012.01.31, 16:09

Re: Как объединить две модели в одном запросе в REST?

Сообщение darlov » 2017.12.06, 12:25

user писал(а):
2017.12.06, 12:19
мне нужно чтобы при прямом обращении выбирать все, что задано в fields
а при обращении к первой фильтрованные данные

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

public function fields()
{
$fields = parent::fields();
if(Yii::$app->controller->action->uniqueId == 'controller/action'){
 unset($fields['id']);
}
return fields;
}

Ответить