我正在使用它构建一个CRUD SPA的模型,该模型使用增变器访问器将几个数据属性从INT更改为可读字符,并将数据显示在表组件上。
示例
class TradingModel extends Model
{
public function getTradingStatusIdAttribute($attribute)
{
return [
0 => 'trading status 1',
1 => 'trading status 2',
][$attribute];
}
}
并使用bootsrap-vue组件编辑值。但是,使用突变值,我需要编辑所有字段,以确保将正确的数据类型属性保存到数据库中。
<template>
<b-form-select id="sales_status_id"
v-model="form.sales_status_id">
<option :value="0">trading status 1</option>
<option value="1">trading status 2</option>
</b-form-select>
</template>
<script>
data() {
return {
items: [],
form: {
property_name: '',
address: '',
trading_status_id: '',
sale_priority_id: '',
sales_status_id: '',
}
这种情况的解决方法是什么?是否可以仅对一个组件使用访问器?或者,如何从数据库中获取原始值并绕过突变值。
在此先感谢您,我学习和教导自己的代码,而且还是一个初学者。
信用给rodrogo.pedra
您可以为值标签提供虚拟访问器:
class TradingModel extends Model
{
// tells Laravel to append this virtual column to JSON output
protected $appends = ['trading_status_label'];
public function getTradingStatusLabelAttribute()
{
return [
0 => 'trading status 1',
1 => 'trading status 2',
][$this->trading_status_id];
}
}
考虑vue的计算属性,但对于Laravel。
通过这种方式,您可以使用trading_status_label在表格中显示,并在与表格或数据相关的任务中继续使用trading_status_id的原始值。