2017-06-12 1 views
0

Ich habe unter MySQL-Tabellen erstellen:Wie mysql find Abfrage mit hasMany() Kreuz/Gegen Beziehung in yii2

Tabelle 1: emp

Felder: id, document_ids

Table2: Dokumente

Felder: id, document_name

Beispieldaten:

Tabelle1

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>

Ich möchte das Ergebnis, das ich oben dritten Tabelle als Folge gedruckt in. Die Beziehung sollte nur beim ersten Modell 'emp' sein. Wie mache ich eine Abfrage, um ein solches Ergebnis in yii2 Modellbeziehung zu bekommen?

Antwort

0

Es hängt davon ab, welche Datenbank Sie verwenden. Yii2 ActiveRelationTrait enhancement - hier Jungs hinzugefügt Unterstützung, um die Beziehung nach Array, verwenden Sie es normalerweise wie andere hasMany() Beziehungen.

Und wenn youre Datenbank verwendet, die dieses nicht unterstützen, können Sie etwas tun, wenn document_ids echte PHP ist Array:

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