Laravel 4 foreach错误 - 试图获取非对象的属性

时间:2014-03-14 08:41:03

标签: php laravel

我正在尝试使用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

我该如何解决?

3 个答案:

答案 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 }}(并重命名该变量,请:)