![](/img/trans.png)
[英]How to get data from Laravel backend and display in Vue/Nuxt frontend
[英]How can I pass hasOne relationship data from laravel controller to Vue frontend
我正在嘗試使用 Laravel 和 Vue 制作一個類似應用程序的博客,但被卡住了。 在開發管理面板時,我想要一個“分配角色”功能,管理員可以在其中分配具有特定角色的用戶,例如“管理員、版主或作者”為此,我在用戶 model 中定義了一個關系
public function role() {
return $this->hasOne(Role::class);
}
現在在 Vue 中,我想顯示一個表格,其中包含所有用戶名及其角色。 為此,我向 laravel 服務器發送了一個請求,以從用戶表中獲取所有數據,用戶表具有以下字段
id、名稱、role_id、email、密碼、created_at、updated_at
我在角色 model 中也定義了一個關系
public function Users() {
return $this->hasMany(User::class);
}
現在,當我獲取所有用戶時,我會
$users = User::all();
return $users;
如何從我上面發送的數據中獲取表中的角色名稱。 現在,我只得到 1,2 或 3 的 role_id,但我想要角色的名稱。
提前致謝
你需要改變你們的關系。
用戶 Model
public function role(){
return $this->belongsTo(App\Role::class, 'role_id', 'id')
}
您可以使用角色關系並從那里獲取名稱。
// Eager load the relation
$users = User::with('role')->get();
return $users;
在您的 html 中。
$user->role->name;
我認為你的一段關系對於初學者來說是錯誤的,應該是
public function role() {
return $this->belongsTo(Role::class);
}
要最小化數據庫查詢,請執行以下操作:
$users = User::with('role)->get();
現在你可以做類似的事情
$users->toJson()
如果要將所有數據傳遞給 javascript。
或者你可以做
@foreach($users as $user)
{{ $user->role->name }}
@endforeach
重要的是with
語句會預先加載所有關系,因此只執行一個數據庫查詢。
$users = User::all();
foreach($users as $user) {
$user->role;
}
return $users;
信不信由你,這就是在任何生成的 JSON 中填充關系所需要做的一切。 你只需要調用“魔術方法”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.