鍍金池/ 問答/PHP  HTML/ laravel Entrust role->delete()

laravel Entrust role->delete()

Entrust 模型Role刪除時,產(chǎn)生FatalErrorException錯誤——Class name must be a valid object or a string in HasRelationships.php (line 487);
代碼:

public function destroy($id)
{
    $role = Role::findOrFail((int)$id);
    if($role->delete())
        return redirect()->route('role.index')->with('success', '刪除成功');
}

通過id已經(jīng)拿到了role對象了,不清楚是哪里的問題。。T_T

回答
編輯回答
不二心

今天也遇到了這個問題:
laravel5.5
問題出來vendor/zizaco/entrust/src/Entrust/Traits/EntrustRoleTrait.php
的51行,將belongsToMany的第一個參數(shù)'auth.model'改為'auth.providers.users.model'.
這個參數(shù)根據(jù)個人auth文件中用戶model實(shí)際路徑更改.
當(dāng)然,直接在Role模型重寫多對多關(guān)系也是可以的.
public function users()
{

return $this->belongsToMany(Config::get('auth.providers.users.model'), Config::get('entrust.role_user_table'),Config::get('entrust.role_foreign_key'),Config::get('entrust.user_foreign_key'));

}

2017年5月8日 19:51
編輯回答
朕略萌

因?yàn)镕ail鳥

2017年4月2日 10:15
編輯回答
風(fēng)清揚(yáng)

已解決,角色權(quán)限的改變會跟新相應(yīng)的users表,role_user是框架自動生成帶有約束的表,而我在Role模型中 并未添加users和role表之間的關(guān)系。不知道這樣解釋的清不清楚,laravel的錯誤提示太直白了。剛接觸有點(diǎn)難以分析。。
代碼:

//App\Models\Role.php
public function permissions()
{
    return $this->belongsToMany('App\Models\Permission', 'permission_role', 'role_id', 'permission_id');
}

public function users()
{
    return $this->belongsToMany('App\Models\User', 'role_user', 'role_id', 'user_id');
}
2017年5月13日 11:59