2016-06-07 5 views
0

У меня есть таблица со строками с колонки строка, при этом "this\dIs\dA\dString"Laravel 5 Метод модель не работает

$callPlans = CustomerCallPlan::where('customer_id', $customer->id)->get(); 

Я получаю значения, как и выше, и ожидается строка «thisXIsXAXString» , как вы догадываетесь, я заменить «\ d» с 'ИКС'. Для этого я использую метод ниже внутри класса модели.

class CustomerCallPlan extends Model 
{ 
    protected $table = 'customer_callplan'; 

    protected $fillable = [ 
     'template', 
     'priority', 
     'customer_id', 
     'strip', 
     'add_number', 
     'actiontype', 
     'data' 
    ]; 

    public function getNumbertemplateAttribute() { 
     return str_replace('\d', 'X', $this->attributes['template']); 
    } 
} 

Но как-то данные доходят до модели без замены .. что может быть причиной этого?

+1

Где и когда вы вызываете 'getNumbertemplateAttribute()'? – jerik

+0

Хороший вопрос Я никогда не называл это. Я думаю, что этот метод является вызовом для каждого requestr с laravel eloquient объектом, классом модели (CustomerCallPlan) – TyForHelpDude

+0

Как объект larvel eloquent знает, что он должен назвать этот метод? Полагаю, для этого есть механизм в ларавеле. Либо вы должны указать, какую функцию следует вызывать при каждом запросе модели, или имя функции создается после определенного синтаксиса. Для последнего я думаю, что ваше имя функции не похоже на что-то такое, а для первого - отсутствие конфигурации. – jerik

ответ

1

Это называется аксессором, и он будет автоматически вызван Eloquent при попытке получить значение. Имя метода должно быть верблюд обсаженного именем столбца, который вы хотите получить доступ, предварённый по получить и последующий Attribute, например getColumnNameAttribute() примет колонки colum_name.

Смежные вопросы