2016-05-20 7 views
1

Hier ist mein restaurents Modell:Yii2 Aktive Rekord Arbeits: Wie ich durch Beziehung in yii2 Modell abfragen kann

class Restaurents extends \yii\db\ActiveRecord 
{ 
    public function rules(){ 
     return [ 
      [['name'], 'string'], 
     ]; 
    } 
    public function getRestaurentInfo(){ 
     return $this->hasOne(RestaurentInfo::className(), ['restaurent_id' => 'id']); 
    } 
} 

und mein RestaurentInfo Modell:

class RestaurentInfo extends \yii\db\ActiveRecord 
{ 
public function rules(){ 
     return [ 
      [['address',], 'string'] 
     ]; 
    } 
    public function getRestaurent() 
    { 
     return $this->hasOne(Restaurens::className(), ['id' =>   'restaurent_id']); 
    } 
} 

ich eine Liste von restaurents abfragen möchten mit Bedingungen: das Restaurant hat einen Namen wie $ key oder das Restaurant hat eine Adresse wie $ key.

Wie kann ich es tun?

Antwort

0

Sie können es wie folgt tun:

$restaurents = Restaurent::find() 
    ->joinWith('restaurentInfo') 
    ->where(['like', 'name', $key]) 
    ->orWhere(['like', 'address', $key]) 
    ->all(); 

Ich würde empfehlen, einige Zeit zu verbringen und verstehen, wie mit Active Record und Active Query zu arbeiten.

+0

Vielen Dank. Ich habe es auch versucht, aber Ergebnis wurde zurückgegeben, die nicht das sind, was ich brauche. Ich möchte eine Liste von Restaurants abfragen, die einen Namen wie $ key oder eine Adresse wie $ key haben. Wie kann ich es tun? – javimuu

+0

@DuyMuu Dieser Code tut genau das, was Sie gemäß Ihrer Datenstruktur beschrieben haben. – arogachev