我有一个如下所示的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)
任何人请给我一个解决方案。吨
谢谢
答案 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 }}