Yii2:我可以在一个搜索模型中使用多个模型吗?

问题描述

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

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

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

有人可以指导我吗。

谢谢。

解决方法

选项 1: 在客户模型中添加此函数:

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

}

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

customerContact.name

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

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

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

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