Laravel - 检索mysql查询结果数组返回到控制器以在视图中显示

时间:2014-01-30 16:14:28

标签: php mysql laravel laravel-4

如何检索从模型返回的结果数组: -

$result = DB::select('select title from mainTable');
return $result;

在我的控制器中,以便我可以将其传递给我的视图: -

$title = "Main Page";
$data =             //I want to assign the result to data
$view = View::make('mainpage')->with('data', $data)->with('title', $title);

3 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,那么您正在尝试弄清楚如何向$ data变量添加内容并将其传递给View。如果您指定了某些内容

$data['result'] = DB::select('select title from mainTable');
return View::make('main page', $data);

现在,您可以在刀片模板中以$ result结果访问查询结果。我肯定会建议使用ORM,以便您可以在单个查询中获得整个结果,如:

// Model /app/models/Main.php
class Main extends Eloquent {
    protected $table = 'mainTable';
}

// Controller (within route method)
    $data['result'] = Main::find(1);
    /* Gets the mainTable result with an id of 1 */

    return View::make('page', $data);

// Template /app/views/page.blade.php
    <h1>{{ $result->title }}</h1>
    <!-- Outputs the title for the result as an H1 HTML element -->

答案 1 :(得分:1)

你可以简单地创建一个这样的模型

class Main extends Eloquent {
    protected $table = 'mainTable';
}

然后,从控制器中,您可以使用以下代码从mainTable表中获取所有记录:

$title = "Main Page";
$data = Main::get(array('title'))->toArray(); // Or Main::all(['title']);
return View::make('mainpage')->with('data', $data)->with('title', $title);

更新:如果需要,可以使用此类内容

class Main extends Eloquent {
    protected $table = 'mainTable';

    public function scopeGatAllByFieldName($q, $field = null)
    {
        if(is_null($field)) return $q;
        return $q->select([$field]);
    }
}

您可以从控制器中将其命名为:

$title = "Main Page";
$data = Main::gatAllByFieldName('title')->get()->toArray();
return View::make('mainpage')->with('data', $data)->with('title', $title);

答案 2 :(得分:0)

Laravel文档(http://laravel.com/docs)在演示如何使用数据库和查询生成器模块方面做得非常出色。

"The select method will always return an array of results." (http://laravel.com/docs/database.)

$data = DB::select('select title from mainTable');
$view = View::make('mainpage')->with('data', $data)->with('title', $title);

我更喜欢使用Query Builder。

$data = DB::table('mainTable')->select('title')->get();
$view = View::make('mainpage')->with('data', $data)->with('title', $title);