【发布时间】:2014-06-14 05:42:27
【问题描述】:
我的查询原因:Object of class Illuminate\Database\Eloquent\Builder could not be converted to string。当我在模型查询中用硬编码名称 'Dennis' 替换 $uname 时,错误就会消失。我检查了会话变量('username')是否为空并导致错误但已设置。感谢您的任何提示。
控制器:
$username = Session::get('username');
$data['users'] = Profile::GetUserData($username);
$users = Profile::GetUserData();
return View::make('profile_view', $data);
型号:
class Profile extends Eloquent{
public function scopeGetUserData($uname){
return DB::table('users')->where('user_name', '=', $uname)->first();
//return DB::table('users')->where('user_name', '=', 'Dennis')->first();
}
}
【问题讨论】:
-
这段代码毫无意义。那不是引发该错误的代码。这不是您使用范围函数的方式。有两次对
GetUserData的调用,一次正确,一次缺少参数。这是怎么回事? -
来自文档:“范围允许您轻松地在模型中重用查询逻辑。” -> 你应该从作用域函数返回查询部分,而不是实际查询数据库。您发布的错误与此代码无关。抛出该错误时,您可能没有那个
->first()。或者别的什么,没有人能说出来,你的代码中发生了各种各样的错误。尝试阅读文档:laravel.com/docs/eloquent#query-scopes