2017-10-18 7 views
0

J'ai inclus un champ d'une table liée en utilisant la fonction extraFields dans le point de terminaison CallRates. Lorsque répertoriant les enregistrements « RATE_INCREASE » est affiché comme prévu:Yii2 reste api champs supplémentaires

{ 
    .... 
    "manually_updated": "no", 
    "created": "2017-10-13 15:15:43", 
    "rate_increase": "50.00" 
}, 

Cependant lors de l'affichage d'un enregistrement individuel est affiché comme nul à chaque fois. Quelqu'un a-t-il des idées? Je suis perplexe.

Pour saisir le terrain, je l'ai fait ce qui suit dans modelFind() contrôleur:

$query = $model::find() 
     ->leftJoin('reseller_config', 'reseller_rate.resellerref = reseller_config.resellerref') 
     ->select('reseller_rate.*, reseller_config.rate_increase'); 

Et puis dans le modèle pour inclure le champ:

public function fields() 
{ 
    $fields = array_merge(parent::fields(), ['rate_increase']); 

    return $fields; 
} 

Répondre

0

Pour mettre en œuvre ce que vous essayez à faire, ce I'do est:

  1. Ajouter dans le modèle pour la table reseller_rate

    public function getResellerRate() 
    { 
        return $this->hasOne('reseller_config',['reseller_rate.resellerref'=> 'reseller_config.resellerref']); 
    } 
    
  2. ensuite dans les champs Fonction:

    public function fields() { $fields = parent::fields(); $fields['rate_increate'] = $this->resellerRate->seller_rate; return $fields; }