Laravel BootstrapVue CRUD SPA如何制作只影响一个vue组件的Accesor

问题描述 投票:0回答:1

我正在使用它构建一个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: '',
  }

这种情况的解决方法是什么?是否可以仅对一个组件使用访问器?或者,如何从数据库中获取原始值并绕过突变值。

在此先感谢您,我学习和教导自己的代码,而且还是一个初学者。

laravel vue.js single-page-application crud edit
1个回答
0
投票

信用给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的原始值。

© www.soinside.com 2019 - 2024. All rights reserved.