Laravel哪里没有在newQuery()中工作

时间:2014-06-18 08:35:31

标签: php laravel laravel-4 eloquent

我在使用laravel中的一段代码时遇到了一些麻烦。我有一个SecuredEloquent课程,我所有的'安全'模特延伸。它所做的只是在我覆盖的newQuery函数中为查询添加一个whereHas子句:

class SecuredEloquent extends Eloquent
{
    public function newQuery($excludeDeleted = true)
    {
        $query = parent::newQuery($excludeDeleted);

        $context = App::make('Wall\Context\Context');

        $query->whereHas('permissions', function($q) use ($context)
        {
            $q->where('context_id','=',$context->id());
            $q->where('level','>=', $context->level());
        });

        return $query;
    }
}

问题:它不起作用。我得到"连接被重置"浏览器中的错误和日志中没有任何内容:(任何人都知道我做错了什么?

EDIT2: MyModel扩展了SecuredEloquent,OtherModel没有

当我尝试在工匠修补工具中运行时,没有任何反应。 的var_dump(为MyModel ::所有());只是停止进程(崩溃?不知道,再没有记录,只是退出) 的var_dump(OtherModel ::所有());但是只是工作

修改

我有ContextServiceProvider:

use Illuminate\Support\ServiceProvider;

class ContextServiceProvider extends ServiceProvider
{
    /**
     * Register
     */
    public function register()
    {
        $this->app->singleton('Wall\Context\Context', function($app)
        {
            return new AppContext;
        });
    }
}

使用AppContext:

use Illuminate\Database\Eloquent\Model;

class AppContext
{

    /**
     * The current context
     *
     * @var Illuminate\Database\Eloquent\Model
     */
    protected $context;

    /**
     * The current context level
     *
     * @var int
     */
    protected $level;

    /**
     * Check to see if the context has been set
     *
     * @return boolean
     */
    public function has()
    {
        if($this->context) return true;

        return false;
    }

    /**
     * Get the context identifier
     *
     * @return integer
     */
    public function id()
    {
        if ( $this->has() ) return $this->context->id;
        return 0;
    }

    /**
     * Get the context permission leven
     *
     * @return string
     */
    public function level()
    {
        if ( $this->level ) return $this->level;
        return 1;
    }

}

希望这有帮助

0 个答案:

没有答案