这可能是一个愚蠢的问题,但我被卡住了..
我基本上想在laravel中运行一个简单的select查询,并在数据库结果中显示单行的结果。
我是php和laravel的新手,所以尝试使用模型来挂起MVC。
以下是我所做的。 路线
Route::get('groupprofile/(:any)',array('uses'=>'groups@profile'));
Controller - groups.php
class Groups_Controller extends Base_Controller {
public $restful=true;
public function get_profile($groupName){
$groups=new Groups();
$groupInfo=$groups->getGroupInfo($groupName);
return View::make('groups.profile.groupprofile')->with('groupInfo',$groupInfo);
}
}
模型 - groups.php
class Groups{
public function getGroupInfo($name){
return DB::query('select * from Groups where name=?',array($name));
}
}
查看 - groupprofile.blade.php
@layout('layouts.default')
@section('content')
<h1>This is a profile page for a group.</h1>
@foreach ($groupInfo -> results as $info)
<br />Here I want to display all columns e.g. name, philosophy, founder name etc.
<br />$info->Description
@endforeach
<br />Testing end
@endsection
有人可以指导我该怎么做? 我无法理解如何使用刀片在视图中显示传递结果集中的数据。
或者我的方法做错了吗?我更乐于编写查询,因此不使用Eloquent或流畅的查询构建器。
答案 0 :(得分:2)
在Larvel中使用Eloquent,这是ORM。 docs对此非常了解。
您的模型应该是Group.php
<?php class Group extends Eloquent {}
就是这样!由于我们正在扩展Eloquent,我们现在可以在这个视图中拉出一行。
Group::where('name', '=', $somevar)->first()
当然,您可能希望将其存储在控制器中的变量中,并将对象传递给您的视图。
class Groups_Controller extends Base_Controller {
public $restful=true;
public function get_profile($groupName){
$groupInfo = Group::where('name', '=', $groupName)->first()
return View::make('groups.profile.groupprofile')->with('groupInfo',$groupInfo);
}
}
然后在您的视图中,您可以像这样访问该行的属性(MySQL列)。
$groupInfo->name