我试图用laravel 4刀片语法查询一些信息,但我总是得到这个错误:
控制器尝试获取非对象的属性
<?php
class ProfileController extends BaseController {
public function user($username) {
$users = User::where("username", "=", $username);
if($users->count()) {
$users = $users->first();
return View::make("profile.user")->with("users", $users);
} else {
return View::make("404");
}
}
}
user.blade.php
@extends("layout.main")
@section("content")
@foreach($users as $user)
{{$user->id}}
@endforeach
@stop
我该如何修复它?
我认为你应该这样做:
$users = User::where("username", "=", $username)->get();
你也在使用first
所以
$users = $users->first();
将只在users变量中存储第一个用户,因此您不能foreach循环它-只需删除first
行。
似乎它不是一个对象。试着
$user['id']; //In this case its an array
其他,尝试输出$user以便您可以看到其中的内容。里面有数据吗?
这里,您只获得(可能)找到的第一行
$users = $users->first();
然后,你把它作为users
变量传递给视图(错误的命名,为什么用户,如果只取一个?)
return View::make("profile.user")->with("users", $users);
现在先不用命名了,问题就在这里。
你拿!!一个! !记录,但你试图迭代它,就像它是记录的集合。
@foreach($users as $user)
{{$user->id}}
@endforeach
因为您尝试迭代$users
(它是单用户),所以Laravel将迭代其属性。要解决这个问题,去掉@foreach
循环,只打印需要打印的内容-> {{ $users->id }}
(请重命名该变量:)