Laravel错误调用成员函数

时间:2013-08-02 13:29:04

标签: laravel laravel-4

我在http://laravel.com/docs/上关注了一些教程,但它无法正常工作。这是我试过的:

角色模型:

<?php

class Role extends Eloquent {

    protected $table = 'accounts';

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

RoleController.php

<?php

class RoleController extends BaseController {

    public function get_role()
    {
        $roles = User::find(16)->group_id;

        if ($roles->contains(3))
        {
            echo 'this works';
        }
        else
        {
            return Redirect::to('news/index');
        }
    }
}

我的路线:

Route::get('dash', 'RoleController@get_role');

这是我的错误:

Call to a member function contains() on a non-object

它说错误在线:

if ($roles->contains(3))

就像contains方法一样......我不知道哈。

另外,$roles = User::find(16)->group_id; 16是帐户的id,对吧? group_id是表格吗?

提前致谢。

编辑:

这是解决方案,我在RoleController.php中更改了它:

<?php

class RoleController extends BaseController {

    public function get_role()
    {
        $roles = User::find(16)->group_id;

        if (if ($roles == '1')
        {
            echo 'this works';
        }
        else
        {
            return Redirect::to('news/index');
        }
    }
}

2 个答案:

答案 0 :(得分:1)

这一行:

$roles = User::find(16)->group_id;

表示您要求“查找用户16,并向我提供该用户的group_id”。这是您所引用的“1”(在您的评论中)。

由于您有group_id - 更改

if ($roles->contains(3))

if ($roles == '3')

答案 1 :(得分:0)

这是解决方案,我在RoleController.php中更改了它:

    <?php

class RoleController扩展了BaseController {

    public function get_role() {
$roles = User::find(16)->group_id;

            if (if ($roles == '1')
             {
               echo 'this works';
             } else {

               return Redirect::to('news/index');
                    }
             }
}