Image::find()->join('INNER JOIN', 'parameters', 'parameters.icon_id = image.id OR parameters.icon_gray_id = image.id')->all(), 'params' => Parameter::find()->all(), ]; } public function actionImage(Request $request, Response $response) { $img = Image::find()->where([ 'sha256' => $request->getQueryParam('sha256') ])->one(); if (!$img) { throw new NotFoundHttpException(); } $response->headers->set('Content-Type', $img->mime); $response->headers->set('X-Image-Data', json_encode($img->getAttributes())); return $response->sendFile(env('UPLOADS_PATH') . '/' . $img->sha256, $img->original_name); } public function verbs() { return [ 'index' => [ 'GET' ], ]; } public function behaviors() { return [ [ 'class' => ContentNegotiator::class, 'formats' => [ 'image/*' => Response::FORMAT_RAW, 'application/json' => Response::FORMAT_JSON ] ] ]; } }