问题描述
在 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();
然后您可以在数据提供者中进行所有连接等。它要快得多,但需要更多的专业知识