ich habe folgende Modelle in yii2:SubQuery in Active
use frontend\modules\bewerber\models\Bewerber;
use common\modules\basis\models\base\Person;
use common\modules\lookup\models\LAnrede;
Wie folgende Abfrage mit Methoden der Active zu schaffen?
SELECT anrede FROM L_anrede JOIN Person ON L_anrede.id=Person.id_anrede WHERE Person.id IN
(SELECT id_person FROM Bewerber WHERE Bewerber.id_person=1);
PS: Die letzte WHERE-Klausel sollte nicht beheben, sondern variabel wie folgt aus:
var_dump(LAnrede::findOne([$model->id_person])->anrede)
, die folgendes Ergebnis löschte wird: Herr oder Fräulein
... .................................................. ...........
Hinweis für Fabrizio Caldarelli
............................................ ....................
Ur-Lösung wird mir nicht helfen: = (
Dies ist ur-Code:
$idPerson = 1;
$show=LAnrede::find()->joinWith(['Person' => function($q) use($idPerson) {
$q->andWhere([
'Person.id' => (new \yii\db\Query())->from('Bewerber')->where(['Bewerber.id_person' => $idPerson])
])->anrede;
}]);
und das ist var_dump($show);
E:\xampp\htdocs\yii2_perswitch\frontend\modules\bewerber\views\bewerber\index.php:48:
object(common\modules\lookup\models\LAnredeQuery)[207]
public 'sql' => null
public 'on' => null
public 'joinWith' =>
array (size=1)
0 =>
array (size=3)
0 =>
array (size=1)
...
1 => boolean true
2 => string 'LEFT JOIN' (length=9)
public 'select' => null
public 'selectOption' => null
public 'distinct' => null
public 'from' => null
public 'groupBy' => null
public 'join' => null
public 'having' => null
public 'union' => null
public 'params' =>
array (size=0)
empty
private '_events' (yii\base\Component) =>
array (size=0)
empty
private '_behaviors' (yii\base\Component) =>
array (size=0)
empty
public 'where' => null
public 'limit' => null
public 'offset' => null
public 'orderBy' => null
public 'indexBy' => null
public 'emulateExecution' => boolean false
public 'modelClass' => string 'common\modules\lookup\models\LAnrede' (length=36)
public 'with' => null
public 'asArray' => null
public 'multiple' => null
public 'primaryModel' => null
public 'link' => null
public 'via' => null
public 'inverseOf' => null
Ich benutze Gridview wie diese
$gridColumn = [
[
'attribute' => '',
'label' => Yii::t('app', 'Anrede'),
'format' => 'html',
'value' => function($model) {
return "<p><font color='green'>" . LAnrede::findOne([$model->id_person])->anrede . "</p>";
}
],
];
Colud u zeigen mir auf, wie ur-Lösung in diesem Zusammenhang zu benutzen?
die Beziehungen bereits durch Gii – tklustig
ok eingestellt wurden, so nehmen (eine oder mehrere Beziehung?) nur erster Ausschnitt. –
Bitte lesen Sie meinen Beitrag erneut. Ich habe ihn geändert! – tklustig