Итак, у меня есть два столбца - SizeX и SizeY. Для внешних пользователей я использую мутатор Laravel.
public function getSizeAttribute(){
/**
* Set Size
*/
$size = $this->SizeX. " x ". $this->SizeY;
/**
* Return
*/
return $size;
}
Чтобы отформатировать такие размеры SizeX x SizeY
. Столбец Sizes
не существует, потому что он динамический. Можно ли использовать мутаторы или альтернативу в модели Elaquent, чтобы определить, что это динамический атрибут, и использовать какой-то метод для преобразования SizeX x SizeY
в отдельные столбцы? Как только пользователь отправляет атрибут Size
обратно в приложение laravel для фильтрации?
Редактировать:
Правильно, это метод, который я использую для получения отфильтрованных элементов.
public function scopeFilteredMaterials($query,$params = array()){
/**
* Get filters
*/
$filters = array();
/**
* Extract Info
*/
if(!empty($params) && is_array($params)){
/**
* Get Available Filters
*/
$filters = $this->getAvailableFilters();
foreach ($filters as $key => $filter){
if(isset($params[$filter])){
$filters[$filter] = $params[$filter];
unset($filters[$key]);
}else{
unset($filters[$key]);
}
}
}
foreach ($filters as $key => $filter){
$query->whereIn(key ,$filter);
}
$result = $query->get();
}
Это переменная фильтров, которая содержит доступные фильтры для просмотра пользователем.
protected $filters = array(
"Name",
"url",
"Size",
);
Я использую приведенное выше, чтобы показать пользователю конкретные значения. Как только пользователь выбирает эти значения, я использую тот же массив для проверки этих фильтров и запускаю запрос. Моя проблема заключается в том, что атрибут Size
состоит из двух столбцов, и у меня нет проблем с использованием следующих переменных Mutator и $appends
для автоматического предоставления значения пользователю.
/**
* Get Size Attribute
*/
public function getSizeAttribute(){
/**
* Set Size
*/
$size = $this->SizeX. " x ". $this->SizeY;
/**
* Return
*/
return $size;
}
Но я не могу найти способ преобразовать переменную Size
обратно в SizeX
и SizeY