Аксессор Laravel не вызывается, когда имя столбца, например column_a_name или coumn_10

Я использую средства доступа Laravel, и все они работают, кроме двух из них:

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

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

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

где имя столбца БД — uber_40_checkbox.

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

У меня есть следующая структура:

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

Другие решения

Других решений пока нет …