我正在寻找一些方法来实现yii2的以下内容:
让我们假设我们有以下结构: - 作者表。 - 书籍表
每位作者 - >写了一本或多本书。
我想要做的是在视图上显示作者的详细信息,并在其下显示所有书籍的网格视图。之后,控制按钮为当前作者创建/删除新书,以及属于当前作者的书籍的网格视图......换句话说,是一个主 - 详细视图。
我应该如何检索图书的数据?来自同一个作者的控制器?
我已经在作者模型中实现了作者和书籍之间的表关系
提前致谢,欢迎任何帮助!
答案 0 :(得分:1)
如果您的作者模型中存在以下关系:
public function getBooks()
{
return $this->hasMany(Books::className(), ['author_id' => 'id']);
}
在声明关系之后,获取关系数据就像访问由相应的getter方法定义的组件属性一样简单:
$author = Author::findOne(1);
$books = $author->books;
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html
答案 1 :(得分:0)
我最终找到的解决方案是:
在作者的控制器上,我修改了"视图"行动,所以我可以用#34;书" activeDataprovider,然后通过" author id":
过滤它public function actionView($ id) { //获得当前作者 $作者= $这 - > findModel($ ID);
$books_search = new BookSearch();
//get the related books for current author
$written_books = $books_search->search(['bookSearch'=>['id_author'=>$id]]);
return $this->render('view', [
'author' => $author,
'books_search'=> $books_search,
'books'=>$written_books,
]);
}
然后我可以在作者的视图中创建一个带有当前作者所写书籍的网格视图