首页 > 解决方案 > Yii2:我可以在一个搜索模型中使用多个模型吗?

问题描述

在 Yii2 中,我能否在一个搜索模型中包含两个模型(活动记录)并将它们显示在网格视图中?

例如,我有两个表,“ customers ”和“ customer_contacts ”。

在我的搜索模型中,我使用客户作为我的主要模型,同时我希望“左加入”到CustomerContacts,并最终在 gridview 中显示Customers.nameCustomerContacts.phoneNumber(在 dataProvider 中)。

有人可以指导我吗?

感谢。

标签: yii2-advanced-appyii2-modelyii2-active-records

解决方案


选项 1:在客户模型中添加此功能:

Public function getCustomerContact(){
Return $this-> hasOne( CustomerContact::className,[customer_id,id]);

}

然后在您的网格视图中,您可以轻松地引用联系人,如下所示:

customerContact.name

请注意,这仅在表之间存在一对一关系时才有效

选项2:(更快但更多挑战)

在数据提供者中,使用查询而不是模型,即 $query = new \yii\db\Query();

然后,您可以在数据提供者中进行所有联接等。它要快得多,但需要更多的专业知识


推荐阅读