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

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

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

Сообщение user »

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

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

Сообщение user »

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

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

Сообщение darlov »

1. Откуда отправляете?
2. Может использовать DTO?
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

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

Сообщение user »

1.что ты имеешь ввиду?
2. ты спрашиваешь?
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

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

Сообщение darlov »

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

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

Сообщение user »

1. мобильное приложение
2. а какое отношение это имеет к моему вопросу?
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

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

Сообщение darlov »

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

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

Сообщение surfer »

т.е. по моему вопросу ответить нечего
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

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

Сообщение user »

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

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

Сообщение darlov »

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
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

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

Сообщение user »

мне нужно чтобы при прямом обращении выбирать все, что задано в fields
а при обращении к первой фильтрованные данные
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

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

Сообщение darlov »

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;
}
Ответить