如何在laravel和vue.js中显示用户名而不是ID(外键)

时间:2019-05-24 08:07:51

标签: vue.js laravel-5 eloquent

我想在Vue.js的表列表中显示用户名而不是supervisor_id。这是一对多的关系。 supervisor_id是用户表中的外键。

///这是vue.js中的视图。我想将work.supervisor_id更改为work.user.name之类的名称,但是它不起作用。

<tr v-for="(work,index) in works.data" :key="work.work_id">
                <td>{{index+1}}</td>
                <td>{{work.work_name}}</td>
                <td>{{work.supervisor_id}}</td>  
                <td>{{work.payment}}</td>
                <td>{{work.created_at | myDate}}</td>
                <td>{{work.end_date}}</td>
                <td>{{work.worker_id}}</td> 
                <td>

///这是我在vue.js中的脚本

<script>
export default {
  data() {
    return{
      editmode: false,
      works:{},
      index:1,
      users:{},
      form: new Form({
        work_id:'',
        work_name:'',
        description:'',
        payment:'',
        location:'',
        end_date:'',
        worker_id:'',
        application_status:'New',
        supervisor_id:'',
                   })
    }
  },

  methods:{

    getResults(page = 1) {
            axios.get('api/work?page=' + page)
              .then(response => {
                this.works = response.data;
      });
    },


    loadWork(){
      if(this.$gate.isClerk()){
       // axios.get('api/work').then(({data})=>(this.works = data));
       axios.get('api/work').then(response => (this.works = response.data));
      }
    },

///这是我的工作控制器

public function index()
{
    return Work::latest()->paginate(10);
}

the data in the vue.js devtool

1 个答案:

答案 0 :(得分:2)

要执行此操作,将需要在Work模型上创建一个关系,该关系将返回您需要的supervisor记录。

这将使您获得supervisor的名称(或取决于关系的user)。

工作模型(app\Work.php):

public function supervisor()
{
    return $this->hasOne(User::class, `supervisor_id');
}

现在在您的控制器中,您可以使用->with()雄辩的方法来渴望加载一个关系:

public function index()
{
    return Work::with('supervisor')->latest()->paginate(10);
}

您现在应该可以使用以下命令在vue中访问主管名称:

{{ work.supervisor.name }}

我希望这会有所帮助。