簡體   English   中英

如何將 hasOne 關系數據從 laravel controller 傳遞到 Vue 前端

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM