Yii2 通过2个关系(3个表)检索数据,并将其显示为listBox

Yii2 通过2个关系(3个表)检索数据,并将其显示为listBox,yii2,Yii2,我有这样的情况:3个表有2个关系1->2,2->3。我想知道如何使用这两种关系从第三个表访问第一个表CRUD中的数据 表1:书籍 表2:书籍和作者 表3:作者 相关表格如下所示: books - books_authors through BookAuthors 1:M, books_authors - authors through AuthorsId 1:1 每本书可能有一位或多位作者 我想在书的CRUD添加/修改列表框中显示所有作者的姓名,但这些姓名已经分配给要选择的特

我有这样的情况:3个表有2个关系1->2,2->3。我想知道如何使用这两种关系从第三个表访问第一个表CRUD中的数据

表1:书籍

表2:书籍和作者

表3:作者

相关表格如下所示:

books - books_authors      through BookAuthors 1:M, 
books_authors - authors    through AuthorsId 1:1
每本书可能有一位或多位作者

我想在书的CRUD添加/修改列表框中显示所有作者的姓名,但这些姓名已经分配给要选择的特定书

在\\u form.php一书中,我尝试了以下方法:

<?= $form->field($model, 'book_id')->listBox(
    ArrayHelper::map(BookAuthors::find()->all(),'book_id','author_id'),
    [
        'multiple' => true,
        'size' => 7,
    ]
    ) 
?>
。。。但我只得到与这本书相关的作者身份证。基本上,如果可能的话,我想知道如何使用上面代码中的第二个关系


非常感谢

有几件事。你们的关系是如何定义的?是一个M:M关系,还是两个1:M关系?为什么表单字段位于属性“book_id”上?最后一点,你为什么要列出图书作者?那应该是作者吗?也许您应该在问题中添加Model::relations..1。我已经更新了关于1:M和M:M的问题。因为一本书可能有许多作者,我想在一个单独的表格上记录,也许这不是Yii与程序的最佳方法。2.我不知道如何将书籍和作者直接联系起来,并考虑到书籍中的内容和作者,并在作者列表中将他们标记为“选定”。
author_id | author_name
1         | JJ
2         | KK 
3         | MM
4         | NN
books - books_authors      through BookAuthors 1:M, 
books_authors - authors    through AuthorsId 1:1
<?= $form->field($model, 'book_id')->listBox(
    ArrayHelper::map(BookAuthors::find()->all(),'book_id','author_id'),
    [
        'multiple' => true,
        'size' => 7,
    ]
    ) 
?>