我正在尝试使用laravel 4 blade语法查询一些信息,但我总是收到此错误:
尝试获取非对象的属性
控制器
<?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
我该如何解决?
答案 0 :(得分:1)
我认为你应该这样做:
$users = User::where("username", "=", $username)->get();
您还在使用first
所以
$users = $users->first();
只会将第一个用户存储在users变量中,因此您无法循环它 - 只需删除first
行。
答案 1 :(得分:0)
似乎它不是一个对象。尝试
$user['id']; //In this case its an array
其他,尝试输出您的$用户,这样您就可以看到其中的内容。还有数据吗?
答案 2 :(得分:0)
在这里,你只得到(可能)找到的第一行
$users = $users->first();
然后,您将其传递给users
变量进行查看(错误命名,为什么用户,如果仅使用一个?)
return View::make("profile.user")->with("users", $users);
暂时忘记命名,这是问题所在
你拿 !!!一个!!!记录,但你试图把它像它是记录集合一样。
@foreach($users as $user)
{{$user->id}}
@endforeach
由于您尝试使用$users
(单用户),Laravel将改为使用其属性。要解决这个问题,请摆脱@foreach
循环并打印出您需要打印的内容 - &gt; {{ $users->id }}
(并重命名该变量,请:)