2016-09-18 3 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; 
    } 
Смежные вопросы