如何使用 laravel+VueJS 以一对一的关系获取数据

Posted

技术标签:

【中文标题】如何使用 laravel+VueJS 以一对一的关系获取数据【英文标题】:How to fetch data with one to one relationship using laravel+VueJS 【发布时间】:2019-07-13 14:57:11 【问题描述】:

如何使用外键显示用户名? 我有 2 张桌子: 用户和部门,一个部门只有一个老板,一个用户只能是一个部门的老板。所以我认为这是一种“一对一的关系”。 部门表将“user_id”作为来自表用户的外键。 在我的Vue中:

<tr v-for="departement in departements" :key="id" >
                <td>departement.id </td>
                <td>departement.name </td>
                <td>departement.user_id </td>
                <td>departement.bio </td>

我想显示用户表中具有 user_id 的用户名。 谢谢。


不工作 部门主管:

public function index()

    return Departement::where('name','!=','admin')->latest()->paginate(100);
    $departements = Departement::with('chief')->get();
    return response()->ajax($departements, 200);

我说的对吗?

【问题讨论】:

【参考方案1】:

你需要先定义关系..

部门模式

public function chief()

    return $this->belongsTo('App\User', 'user_id');

现在使用预先加载的部门获取数据。

控制器功能

$departments = Department::with('cheif')->get();

现在您可以在department 对象中访问特定的Cheif 对象。

在 Vue 中

<td> department.cheif.name </td>

【讨论】:

【参考方案2】:
    执行获取请求以获取用户
mounted () 
  axios.get('some/api/users')
  .then(res => 
    this.$set(this, 'users', this.users.reduce((accum, user) => accum[user.id] = user, ))
    // transform the JSON to an object that maps to the user id
  )

    在您的模板中
<tr v-for="departement in departements" :key="id" >
                <td>departement.id </td>
                <td>departement.name </td>
                <td>departement.user_id </td>
                <td>departement.bio </td>
                <td>users[department.user_id].name</td>

【讨论】:

我得到了部门和主管的数据,但没有显示。不知道为什么! 当我在导航器的控制台中看到数据时,我得到了部门和具有 user_id 但未显示在表格上的用户的数据

以上是关于如何使用 laravel+VueJS 以一对一的关系获取数据的主要内容,如果未能解决你的问题,请参考以下文章

在模板内的 vuejs 组件中导入和使用类

如何使用 Laravel 在 VueJS 中赋值?

如何使用 laravel 和 vuejs 下载文件

如何在 Laravel Blade 中使用 Vuejs

如何使用 vuejs 和 laravel 使用块方法上传大文件?

访问 SQL 以创建一对多关系而不强制参照完整性