2017-10-19 106 views
1

使用GET列出記錄時,包含的extraField顯示正確的值 - rate_increase是額外的字段。Yii2其餘字段

{ 
    "reseller_rateref": 263756, 
    "rate_increase": "50.00", 
    ... 
}, 

模型

class ResellerRateResource extends ResellerRate 
{ 
public $rate_increase; 
/* 
* @return $fields array Filtered fields for API presentation 
*/ 
public function fields() 
{ 
    $fields = array_merge(parent::fields(), ['rate_increase']); 

    return $fields; 
} 

查詢來獲取數據:

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

然而觀看單個記錄時,它始終顯示爲空。任何人都知道爲什麼?

+0

不,我們不這樣做,因爲你沒有提供的信息 – delboy1978uk

+0

更好.... – Kyle

+0

是的,看到我的回答 – delboy1978uk

回答

0

我敢肯定,這條線是錯誤的:

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

什麼是['rate_increase']?你剛剛定義的一個數組,它包含一個字符串值。

我認爲你需要一些$variable['rate_increase']然後它可能會工作。

0

據我所知fields只用於查看目的隱藏敏感信息。但是,如果您有任何動態屬性,在自定義查詢,你可以使用屬性函數來獲得屬性的值:

function attributes() { 
    $attrs = parent::attributes(); // get all the attributes of the current model 

    $attrs[] = 'rate_increase'; 
    return $attrs; 

} 

現在,當你永遠有一個值rate_increase列,你將得到的值,例如:$model->rate_increase;

http://www.yiiframework.com/doc-2.0/yii-base-model.html#attributes()-detail