2013-08-16 68 views
2

在我以前的問題中,我得到執行一個原始的SQL查詢。Laravel 4查看內部視圖

我宣佈一個公共職能在我的控制器:

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 

當我嘗試echo $ name時,變量未定義。

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

+0

我最近在一個陌生人代碼中見過這個。爲什麼有人想從視圖中查詢?這很醜陋,違反了MVC公約。請避免做這樣的事情或習慣開發結構化。 。 。 。 我不能講很多關於Laravel,但考慮到你可能感興趣的其他MVC框架模型關係,這是常見的,遵循約定。聰明。拆分邏輯。 –

回答

1

在這裏你去:

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

這會給你所有的player_deaths按時間排序的對象。

+0

謝謝。 Stil,我怎麼能在視圖中檢索與SQL查詢中相同的結果? –

+0

你能告訴我你的表關係嗎? –

0

你正在使用DB :: select,所以你必須做一個get()來檢索記錄,順便說一下,對視圖進行SQL查詢並不好,不尊重MVC的arquitecture模式。

+0

如何以更好的方式做到這一點?這是需要的,我知道這不好,但想不到更簡單/更好的方法。 –

0

看看作曲家。基本上是一個過濾器或類方法,當某些視圖名稱被渲染時被調用並自動分配一個視圖變量。

告訴作曲家運行查詢和設置死亡變量要在現有的資料的意見。

然後你可以遍歷所有的變量,如果你已經在您的視圖分配它。