Laravel 4查询内部视图

时间:2013-08-16 23:30:59

标签: laravel laravel-4

在我之前的问题中,我必须执行原始SQL查询。

我在控制器中声明了一个公共函数:

public function deaths()
{
    $getdeaths = DB::statement('SELECT * FROM player_deaths ORDER BY time DESC LIMIT 10');
    return View::make('main.latestdeaths')->with('getdeaths', $getdeaths);
}

在检索数据时,我想显示玩家名称,因此在foreach中的视图内部,尝试运行SQL查询。

        @foreach($getdeaths as $getdeath)
    <tr>
        <? $name = DB::select( DB::raw('SELECT name FROM players WHERE id = '$getdeath->player_id'') ) ?>
        <td>{{ $getdeath->player_id }}</td>
        <td></td>
        <td></td>
    </tr>
    @endforeach

当我尝试回显$ name时,未定义变量。

我可以用其他方式解析吗?

3 个答案:

答案 0 :(得分:2)

你去:

$getDeaths = DB::table('player_deaths')->orderBy('time','desc')->take(10)->get();
return View::make('main.latestdeaths')->with('getDeaths', $getDeaths);

这将为您提供按时间排序的所有player_death的对象。

答案 1 :(得分:0)

您正在使用DB :: select,因此您必须执行get()来检索记录,顺便说一下,不要在视图上进行SQL查询,不要尊重MVC arquitecture模式。 / p>

答案 2 :(得分:0)

看看作曲家的观点。基本上是在呈现某些视图名称时调用的过滤器或类方法,并自动分配视图变量。

告诉作曲家运行查询并为想要提供信息的视图设置deaths变量。

然后,您可以循环浏览变量,就好像您已在视图中指定了它一样。