我是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);
}
));
非常感谢任何帮助。
干杯
答案 0 :(得分:2)
您应该将变量$query
作为模型中方法的第一个参数传递。例如:
public function scopeForUser($query, User $u)
{
return $query->where('userid', '=', $u->id);
}
第一个参数不一定需要$query
,但它应该与您在范围方法中使用的变量相同(在本例中为$query
)。