2016-09-18 128 views
1

我在尝试检查用户是否在数据库中有角色时遇到问题。当我在模型外部执行时,它工作正常,但由于某种原因,当我需要在模型中执行此操作时,我得到“尝试获取非对象的属性”错误。这里是我的代码:试图获取非对象的属性。 Laravel 5.2

public function owed_amount() { 
    $user_total = $this->total_expenses(); 
    $expenses = Expense::where('removed', false)->get(); 
    $total = 0; 
    foreach ($expenses as $expense) { 
     $total += $expense->amount; 
    } 
    $total_users = 0; 
    $users = User::get(); 
    foreach ($users as $user) { 
     if($user->has_role('is-payee')) //Error comes from here! 
     { 
     $total_users++; 
     } 
    } 
    $paid_in = $this->total_paid_in(); 
    $got_paid = $this->total_got_paid(); 

    $owed = $user_total - $total/$total_users + $paid_in - $got_paid; 
    return number_format($owed, 2); 
    } 

public function has_role($data) { //Checking for role in database 
    $perm = Permission::where('data', $data)->first(); 
    $ptg = PermissionToGroup::where([ 
     'group_id' => $this->usergroup->id, 
     'perm_id' => $perm->id 
    ])->first(); 
    if($ptg===NULL){ return false; } 
    else{ return true; } 
    } 

为您的帮助欢​​呼!

+0

结果,如果有什么是$烫发没有结果=权限::在哪里(“数据”,$数据) - >第一(); –

+0

我认为,但我加倍检查数据库,它肯定存在 – Imphusius

+0

你可以提供有关错误的更多信息?,我发布了一个解决方案,我认为你的代码错误 –

回答

2

你必须检查是否有用于烫发$

public function has_role($data) { //Checking for role in database 
    $perm = Permission::where('data', $data)->first(); 
    if($perm) { 
     $ptg = PermissionToGroup::where([ 
     'group_id' => $this->usergroup->id, 
     'perm_id' => $perm->id 
     ])->first(); 
     if($ptg===NULL){ return false; } 
     else{ return true; } 
    } 
    else 
    return false; 
    } 
相关问题