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


Laravel 4 foreach error - Trying to get property of non-object

我试图用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 }}(请重命名该变量:)