如何在yii2中使用hasmany()交叉/反向关系创建mysql查找查询

时间:2017-06-12 05:24:18

标签: yii2 yii2-model

我有以下mysql表:

表1:emp

字段:id,document_ids

表2:文件

字段:id,document_name

示例数据:

表1



emp
<table border='1pt'>
  <tr>
    <td>id</td>
    <td>document_ids</td>
  </tr>
  <tr>
    <td>1</td>
    <td>[1,2]</td>
  </tr>
  <tr>
    <td>2</td>
    <td>[2,3]</td>
  </tr>  
</table>

documents
<table border='1pt'>
  <tr>
    <td>id</td>
    <td>document_name</td>
  </tr>
  <tr>
    <td>1</td>
    <td>Matser Degree</td>
  </tr>
  <tr>
    <td>2</td>
    <td>HSC</td>
  </tr>
    <tr>
    <td>3</td>
    <td>SSC</td>
  </tr>
</table>

Result should be:

<table border='1pt'>
  <tr>
    <td>id</td>
    <td>documents</td>
  </tr>
  <tr>
    <td>1</td>
    <td>Master Degree, HSC</td>
  </tr>
  <tr>
    <td>2</td>
    <td>HSC,SSC</td>
  </tr>
</table>
&#13;
&#13;
&#13;

我希望结果是我在第三张表格中打印出来的结果。 关系应该是第一个模型&#39; emp&#39;只要。如何在yii2模型关系中进行查询以获得此类结果?

1 个答案:

答案 0 :(得分:0)

这取决于您使用哪个数据库。 Yii2 ActiveRelationTrait enhancement - 这里的人添加了通过数组获取关系的支持,通常像其他hasMany()关系一样使用它。

如果您使用不支持此功能的数据库,您可以执行以下操作,如果document_ids是真正的PHP数组:

public function getDocuments() {
   return Document()->find()->andWhere(['id' => $this->document_ids]);
}
相关问题