【问题标题】:Laravel BootstrapVue CRUD SPA how to make an Accesor that affect only one vue componentLaravel Bootstrap Vue CRUD SPA 如何制作只影响一个 vue 组件的访问器
【发布时间】:2019-11-25 02:01:56
【问题描述】:

我正在使用它构建一个 CRUD SPA 模型,该模型使用 mutator 访问器将几个数据属性从 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】:

    归功于 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 原始值。

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 2023-03-21
      • 1970-01-01
      • 2017-03-28
      • 2019-10-25
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 2018-01-14
      相关资源
      最近更新 更多