试图获取非对象的属性; laravel数组显示

时间:2014-11-28 14:31:53

标签: php laravel orm eloquent

我有一个如下所示的laravel抓取控制器,

public function fetchbywhere()
{

    $result=User::find(2);
    return View::make('fetchbywhere')->with('resultrow',$result);

}

我的User.php模型文件,

 use Illuminate\Auth\UserTrait;
 use Illuminate\Auth\UserInterface;
 use Illuminate\Auth\Reminders\RemindableTrait;
 use Illuminate\Auth\Reminders\RemindableInterface;

 class User extends Eloquent implements UserInterface, RemindableInterface {

use UserTrait, RemindableTrait;
protected $table = 'users';
protected $hidden = array('password', 'remember_token');

}

和我的routes.php文件,

Route::get('select-by-where',array('as'=>'select_by_where','uses'=>'Test@fetchbywhere'));

我的视图文件名为fetchbywhere.blade.php,

 <title>Fetch by Where clouse</title>

 <h2>Users - Where clouse</h2>

@foreach($resultrow as $data)
<ul>
  <li>{{$data->name}}</li>
</ul>
@endforeach

我的数据库有像

这样的字段
id|name|email|age|created_at|updated_at

我收到的错误如试图获取非对象的属性(查看:E:\ wamp \ www \ new_laravel \ app \ views \ fetchbywhere.blade.php)

任何人请给我一个解决方案。吨

谢谢

1 个答案:

答案 0 :(得分:2)

您正在使用User::find(2)这会返回id为2的User的单个实例。如果它不存在,则返回null。在您的视图中,您正在迭代$resultrow,就像它是集合而不是单个模型一样。

我相信你真正想做的事情是这样的:

$result=User::where('some-column', 'operator', 'some-value')->get();
return View::make('fetchbywhere')->with('resultrow',$result);

一个例子可能是......

$result=User::where('age', '>', '18')->get();
return View::make('fetchbywhere')->with('resultrow',$result);

......让每个人都超过18岁


它的&#34; where子句&#34;不是clouse;)

更新

find方法的实际用途是仅使用传递的id(数据库中的主键)获取一个对象。它没有返回集合(列表),因为它无法找到具有相同ID的多个行,因为主键是唯一的。

如果您只想要一个用户(按特定ID),则必须更改视图才能直接访问模型

<title>Fetch by Where clouse</title>

<h2>Users - Where clouse</h2>

{{ $resultrow->name }}