首页 > 解决方案 > ORM 在 laravel 的默认用户控制器和用户模型中不起作用

问题描述

我想获得用户明智的角色。这是我面临错误....

UserController.php(用户控制器文件)

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\UserRequest;
use App\Employee;
use App\Role;
use App\User;
use App\Site;
use App\Client;
use App\ProjectType;
use App\UserPermission;
use Auth;
use DB;
use App\Project;

class UsersController extends BaseController {

public function __construct() {
    $this->isSetClientAndProjectType();

    $data = User::with('Role')->first();        
    echo "<pre>";print_r(json_decode($data)); die;

    }
}

User.php(用户模型文件)

namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Authenticatable {

use SoftDeletes;

 use Notifiable;

protected $fillable = [
    'name', 'role_id', 'password', 'siteid', 'email', 'status', 'allowed_to_bypass_pm', 'allowed_to_bypass_admin'
];
protected $hidden = [
    'password', 'remember_token',
];

// Get users roles
public function Role() {
    return $this->hasMany('App\Role', 'role_id', 'id');
 }
}

错误是

在此处输入图像描述

我该如何解决这个错误?

帮帮我,伙计们。

谢谢你。

标签: laravellaravel-5ormrelationship

解决方案


如果用户有很多“角色”,它应该是public function roles().

您已定义:

单个用户有一个 role_id

因此,您需要:

如果用户只有一个角色,它将是:

public function role() {
    return $this->belongsTo('App\Role');
}

Role 模型的反面是:

public function users() {
    return $this->belongsToMany('App\User');
}

由于许多用户可以具有相同的角色。

希望这可以帮助。


推荐阅读