2015-12-16 7 views
0

Я использую Laravel аксессоров и все они работают, за исключением двух из них:Laravel сбруя не вызывается, когда имя столбца, как column_a_name или coumn_10

public function getLambdaDCheckboxAttribute($value) 
{ 
    ... 
} 

где имя столбца БД lambda_d_checkbox и

public function getUber40CheckboxAttribute($value) 
{ 
    ... 
} 

где имя столбца DB - uber_40_checkbox.

Я думаю, что проблема в первом примере - это петь букву «d» между двумя подчеркиваниями и числом «40» во втором exaplme. Как я могу вызвать вызов этих аксессуаров?

I имеет следующую структуру:

class UploadIconsRES extends Eloquent{ 
    private $verbesserte_text = ""; 
    private $verbesserte_image = ""; 
    private $lambda_d_text = ""; 
    private $lambda_d_image = ""; 

    public function getVerbesserteCheckboxAttribute($value) 
    { 
     if($value == "yes") 
     { 
      $this->verbesserte_image= 'http://h02b.ebau.at/austrotherm/1280/'.DB::table('upload_icons_url')->where('id', 1)->pluck('icon_url'); 
      $this->verbesserte_text = DB::table('upload_icons_text')->where('id', 1)->pluck('icon_name'); 
     } 

     return $value; 
    } 

    public function getLambdaDCheckboxAttribute() 
    {   
     if($this->lambda_d_checkbox == "yes") 
     { 
      $this->lambda_d_image ='http://h02b.ebau.at/austrotherm/1280/'.DB::table('upload_icons_url')->where('id', 34)->pluck('icon_url'); 
      $this->lambda_d_text = DB::table('upload_icons_text')->where('id', 34)->pluck('icon_name'); 
     } 

     return $value; 
    } 

    public function toArray() 
    { 
    $array = parent::toArray(); 
    $array['icons'] = array(); 

    if($this->verbesserte_image != "") 
    { 
     $icon = array(); 
     $icon['url'] = $this->verbesserte_image; 
     $icon['text'] = $this->verbesserte_text; 

     array_push($array['icons'], $icon); 
    } 

    if($this->lambda_d_image != "") 
    { 
     $icon = array(); 
     $icon['url'] = $this->lambda_d_image; 
     $icon['text'] = $this->lambda_d_text; 

     array_push($array['icons'], $icon); 
    } 

    return $array; 
    } 

тогда ...

class ProductMetaRES extends Eloquent { 

    protected $table = 'products_meta_res'; 
    protected $primaryKey = 'product_id'; 

    public function UploadIconsRES() 
    { 
     return $this->hasMany("UploadIconsRES", "productID", "id"); 
    } 
} 

тогда ...

class ProductLangRes extends Eloquent 
{ 
    protected $table = 'products_lang_res'; 

    public function ProductMetaRES() 
    { 
     return $this->hasOne("ProductMetaRES", "product_lang_FS"); 
    } 
} 

И, наконец, когда я звоню использовать эти классы в моем контроллере например:

$content = ProductLangRES::with('ProductMetaRES.UploadIconsRES')->get(array('id', 'de_AT as name', 'de_AT_description as description')); 

Я не получаю желаемого icon_url и icon_text. Кроме того, у меня больше помощников в тех классах, которые работают нормально, но я не включил их в пример здесь для простоты.

ответ

0

Вы можете сделать это следующим образом:

public function getLambdaDCheckboxAttribute() 
{ 
    return $this->lambda_d_checkbox; 
} 

public function getUber40CheckboxAttribute() 
{ 
    return $this->uber_40_checkbox; 
} 
+0

Это то же самое. Методы никогда не называются. –

+0

Как вы их называете? – Tim

+0

Я их не называю. Я ожидаю, что Laravel будет автоматически вызван. Разве это не так? –