Я пытаюсь написать некоторые методы доступа в соответствии с моей лучшей интерпретацией документации, и они, похоже, не работают. Я пытаюсь расшифровать атрибут, который я шифрую, когда он входит в базу данных, через вызов API, который запускается в запланированной команде консольного мастера. У меня есть модель, которая выглядит следующим образом:Laravel 5 Model Accessor Методы не работают
<?php namespace App;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use ET_Client;
use ET_DataExtension;
use ET_DataExtension_Row;
use Crypt;
//child implementation
class MasterPreference extends Model {
////these fields can be mass assigned
protected $fillable = [
//
'SMS_OPT_IN',
'EMAIL_OPT_IN',
'CUSTOMER_NAME',
'CUSTOMER_ID'
];
protected $DE_Names = ['MasterPreferences', 'SubPreferences'];
protected $results = '';
//instantiate and replicate
function __construct()
{
}
/**
*
*
* @return $getResult
*/
public function getData()
{
}
/**
* store to the Db
*/
public function store($results)
{
}
/**
* decrypt CUSTOMER_ID
* @param $value
* @return mixed
*/
public function getCustomerIdAttribute($value)
{
return Crypt::decrypt($value);
}
public function getAccountHolderAttribute($value)
{
return $value . 'testing';
}
/**
* ecnrypt Customer ID
*
* @param $value
*/
public function setCustomerIdAttribute($value)
{
$this->attributes['CUSTOMER_ID'] = Crypt::encrypt($value);
}
}
Как вы можете видеть выше, я создал 2 метод аксессоров один для атрибута с именем CUSTOMER_ID, а другое для ATTRIB имени ACCOUNT_HOLDER. Когда я храню, как $ all = MasterPreference :: all() и dd ($ all) в моем методе индекса в MasterPreferencesController, эти атрибуты не изменяются. Есть ли еще один способ вызова этих методов доступа? Разве они не должны работать по волшебству Ларавеля?
Я ценю любую помощь! Я довольно тупой и не могу найти это в документах.
Вы, ребята, оба правы в какой-то степени. Вчера вечером я понял, что волшебство происходит, если вы назначаете атрибут напрямую, а не вытягиваете все из модели.Например: '// искать их $ all = MasterPreference :: all(); $ idArray = array(); // значения получают дешифрование с помощью accessor foreach ($ all as $ k => $ val) { $ idArray [] = $ val-> customer_id; } 'НО также был пустым конструктором. – funkenstein
Да, они специально называются «аксессурами». Вы должны получить к ним доступ, чтобы произошло волшебство. Даже если вы вызываете 'toArray()' или 'toJson()', будут применены функции доступа. – Mysteryos
Спасибо! Вы, ребята, оба были очень полезны! – funkenstein