Есть связи:
public function getGroup()
{
return $this->hasMany(Group::className(), ['id' => 'group_id']);
}
public function getKey()
{
return $this->hasOne(Key::className(), ['key_board_id' => 'id']);
}
Сформировал запрос (в модели Key_board):
$data = $this::find()
->select(['id', 'name', 'group_id'])
->where(['scenario' => 1, 'user_id' => $user_id])
->with([
'key' => function ($query) {
$query->select(['id', 'value', 'key_board_id']);
},
'group' => function ($query) {
$query->select(['id', 'foto']);
}
])
->orderBy('order')
->asArray()
->all();
Получаю данные вот в таком виде:
[
[
'id' => '1',
'name' => 'ddd',
'group_id' => '2',
'key' => [
[
'id' => '4',
'value' => 'ggg',
'key_board_id' => '1',
],
],
'group' => [
'id' => '2',
'foto' => 'data',
],
],
]
Неплохо, но хотелось бы получить примерно такой результат:
[
[
'id' => '1',
'name' => 'ddd',
'group_id' => '2',
'key' => [
[
'id' => '4',
'value' => 'ggg',
'key_board_id' => '1',
],
],
'foto' => 'data',
]
[
Можно ли как-то изменив запрос, чтобы не корректировать данные вручную?
key_board_id
и group_id
тоже желательно убрать (из запроса нельзя - ошибка).
Спасибо.
Пока сделал так:
foreach ($data as &$B) {
if ($B['group']) {
$B['foto'] = $B['group']['foto'];
} else {
$B['foto'] = '';
}
if ($B['key']) {
foreach ($B['key'] as &$key) {
unset($key['key_board_id']);
}
}
unset($B['group']);
unset($B['group_id']);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как происходит процесс добавления/извлечения JSON данных из MySQL? Достаточно ли их просто записывать в виде строки, а потом извлекать, превращать...
Подскажите пожалуйста правильный запрос для создания одинаковых строк, где только одно значение будет отличаться
Подскажите пожалуйста как в PHP принимается JSON? Просто, я тут решил потестить в битриксе24 исходящие веб хуки написал API наnet но он почему-то...
Всем приветИспользуя для REST-клиента библиотеку GuzzleHttp