我使用过Yii和Yii2几次,每次使用它,我都会迷失这个框架。实际上,Yii非常强大,它可以为您做很多事情,但是有时您会因此而迷失方向,不知道发生了什么以及如何做一些简单的事情。现在,我尝试用2个相关表中的数据填充表。我已经阅读过Yii论坛,stackoverflow主题,youtube ...,但没有任何效果。我的配置是Yii2 Advanced。
在postgres中,我有两个表:
事实是,在我的选项/索引中,我想像这样在表格中显示工具名称(GridView?):
另一个选项可能是通过DropDownList过滤表,在这里我可以选择工具并更新表。如果未选择任何工具,则显示所有数据。我不知道哪个选项更简单,对我来说都是有效的。
有人可以给我看些灯吗?我会很感激...谢谢!
在选项模型中,您需要添加以下内容
public function getTools()
{
return $this->hasOne(Options::className(), ['id' => 'tool_id']);
}
public function getToolName() {
return $this->tools->tool_name;
}
然后在toolName的gridview中将有一个可用字段
您正在寻找的是relations。
在您的工具模型中将是hasMany:
public function getOptions() {
return $this->hasMany(Options::className(), ['id' => 'id'])
->count();
}
以及您的期权模型中的hasOne:
public function getTool() {
return $this->hasOne(Tools::className(), ['id' => 'id'])
->count();
}
现在$model = Tools::find()->all()
也将通过$model->options
提供相关数据。反之亦然。
由于您可能希望所有工具都带有所有选项,因此$ dataProvider将是选项,而不是工具。对于每个选项,您将获得相关的工具。
相关数据可以在网格视图中显示,并带有>
[ 'attribute' => 'tools', 'value' => 'tools.tool_name' ],
请参见this article以供参考。
最好的方法是使用活动模型中实现的关系。