Код: Выделить всё
public function actions()
{
....
'view' => [
'class' => ViewAction::class,
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
];
...
}
Код: Выделить всё
class ViewAction extends \yii\rest\Action
{
public function run()
{
if ($this->checkAccess) {
call_user_func($this->checkAccess, $this->id);
}
return $this->prepareDataProvider();
}
protected function prepareDataProvider()
{
$requestParams = Yii::$app->getRequest()->getBodyParams();
if (empty($requestParams)) {
$requestParams = Yii::$app->getRequest()->getQueryParams();
}
/* @var $modelClass \yii\db\BaseActiveRecord */
$modelClass = $this->modelClass;
$query = $modelClass::find()->with('books');
$query->andWhere(['id' => '1']);
return Yii::createObject([
'class' => ActiveDataProvider::className(),
'query' => $query,
'sort' => [
'params' => $requestParams,
],
]);
}
}
Если так, то вернутся лишь книги -
Код: Выделить всё
$query = $modelClass::findOne($requestParams);
$books = $query->getBooks();
return Yii::createObject([
'class' => ActiveDataProvider::className(),
'query' => $books,
'sort' => [
'params' => $requestParams,
],
]);
Код: Выделить всё
public function getBooks()
{
return $this->hasMany(Book::class, ['author_id' => 'id']);
}