Laravel 4 Framework - 查询范围无效

时间:2014-05-20 10:48:47

标签: laravel laravel-4

我是Laravel的一个大新手,我试图做一个查询范围,但它似乎没有工作,我一直收到这个错误

Argument 1 passed to Letters::scopeForUser() must be an instance of User

我的用户已登录,但它似乎仍无法正常工作。

这是我的信件模型

<?php

class Letters extends Eloquent {

    protected $table = 'letters';

    public function scopeForUser(User $u)
    {

        return $query->where('userid', '=', $u->id);

    }

}

在我的控制器中我有以下

Route::get('myletters', array(
    'before' => 'auth|userdetail',
    function()
    {

        // Grab the letters, if any, for this user
        $letters = Letters::forUser(Auth::user())->get();

        $data = [
            'letters' => $letters
        ];

        return View::make('myletters', $data);

    }
));

非常感谢任何帮助。

干杯

1 个答案:

答案 0 :(得分:2)

您应该将变量$query作为模型中方法的第一个参数传递。例如:

public function scopeForUser($query, User $u)
{

    return $query->where('userid', '=', $u->id);

}

第一个参数不一定需要$query,但它应该与您在范围方法中使用的变量相同(在本例中为$query)。