【问题标题】:Display parent-child relation yii2显示父子关系yii2
【发布时间】:2015-03-31 19:27:20
【问题描述】:

我正在寻找一些方法来用 yii2 实现以下内容:

假设我们有以下结构: - 作者表。 - 书桌

每位作者 -> 写过 1 本书或更多本书。

我想做的是在一个视图上显示作者的详细信息,并在其下显示它所写的所有书籍的网格视图。之后,为该当前作者创建/删除新书的控制按钮,以及属于当前作者的书的网格视图......换句话说,主从视图。

我应该如何检索书籍的数据?来自 Authors 的同一控制器?

我已经在作者模型中实现了作者和书籍之间的表关系

提前致谢,欢迎任何帮助!!

【问题讨论】:

    标签: view parent-child relationship yii2 relation


    【解决方案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

    【讨论】:

      【解决方案2】:

      我最后找到的解决方案是:

      • 在作者的控制器上,我修改了“view”动作,所以我可以创建一个“books”activeDataprovider,然后通过“author id”过滤它:

        公共函数 actionView($id) { //获取当前作者 $author=$this->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,
            ]);
        }
        

      然后我可以在作者的视图上创建一个带有当前作者所写书籍的网格视图

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多