用__get格式化数据



我是PHP/Eloquent的新手,我正试图在我的Model类中创建一个小数据格式化器。

public function __get($key)
{
switch ($key) {
case "preferred":
$this->attributes[$key . "_formatted"] = ($this->getAttribute($key) == 1) ? "Yes" : "No";
break;
}
return parent::__get($key);
}

它工作得很好,它格式化了我想要格式化的数据。当我想$model->update()时,我得到了错误

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'preferred_formatted' in 'field list' 

有一种方法,所以我可以使它,所以当我更新我的$模型它不寻找preferred_格式化。我试过把它隐藏起来,但无济于事,我也尝试了一些不同的解决方案,但在这一点上,我不确定是否有更好的方法来格式化数据,或者如果我做错了什么,任何帮助都很感激。

给你的模型添加一个新属性:

class MyModel{
public function getPreferredFormattedAttribute()
{
($this->preferred == 1) ? $formatted = 'Yes' : 'No';
return $formatted;
}
}
然后你可以像这样调用MyModel属性:
$myModel = MyModel->find(1);
$myModel->preferred_formatted;
// or
$myModel->PreferredFormatted;

另一种方法是使用全局helper:创建一个文件/app/helper/myHelper.php并添加到composer.json

"autoload": {
"files": [
"app/helper/myHelper.php"
]
},

把你的代码放在那里:

<?php
if(!function_exists('formatYesNo')){
function formatYesNo($valueToBeFormatted)
{
(valueToBeFormatted == 1) ? $formatted = 'Yes' : 'No';
return $formatted;
}
}

任意使用

$myModel = MyModel->find(1);
formatYesNo($myModel->preferred);

相关内容

  • 没有找到相关文章

最新更新