2014-11-04 75 views
0

我無法弄清楚爲什麼,但我可以var_dump($ cPage)並獲得完整的數組,但我無法在視圖中訪問我的變量。 {{$ cPage-> code}} allways得到一個「未定義的屬性:Illuminate \ Database \ Eloquent \ Collection :: $ code」錯誤。任何人都能解釋我爲什麼?Laravel - 陣列中未定義的屬性

控制器:

public function getPages($lang, $slug) 
{ 

    $cPage = Page::join('langs', 'langs.id', '=', 'pages.lang_parent_id') 
      ->where('slug', '=', $slug) 
      ->where('code', '=', $lang) 
      ->get(); 

    $mainPages = Page::where('parent_id', null) 
       ->get(); 

    $allPages = $this->getAllPages($mainPages); 

    return View::make('index') 
    ->with('cPage', $cPage) 
    ->with('mainPages', $mainPages) 
    ->with('allPages', $allPages); 

} 

查看

<ul class="nav"> 
    <li class="dropdown"> 
    <button type="submit" class="btn dropdown-toggle icon-white" data-toggle="dropdown"> {{ $cPage->code }} <b class="caret"></b></button> 
    <ul class="dropdown-menu pull-right"> 
     <li><a href="#">Português</a></li> 
     <li><a href="#">English</a></li> 
    </ul> 
    </li> 
</ul> 

var_dump($cPage)

陣列(1){[0] =>數組(9){[ 「ID」] =>字符串(1)「1」[「parent_id」] => NULL [「lang_parent_id」] =>字符串(1)「1」[「translate_parent_id」] => NULL [「title」] => string (8)「Clientes」[「slug」] => string(8)「clientes」 [「sort」] => NULL [「name」] => string(10)「Português」[「code」] => 字符串(2) 「PT」}}

+0

嘗試 - >第一()而不是得到 – lukasgeiter 2014-11-04 18:04:11

+0

謝謝,它使用 - > first()。你能爲我提供一個解釋嗎? – 2014-11-04 18:07:54

+0

您的查詢可能會返回多個結果,因此返回一個集合(即使它只有一個結果)。首先將查詢限制爲一個結果並返回該結果 – lukasgeiter 2014-11-04 18:11:55

回答

1

您需要在您的視圖中使用循環,或者如果你希望結果只有一個,你可以改變getfirst

$cPage = Page::join('langs', 'langs.id', '=', 'pages.lang_parent_id') 
     ->where('slug', '=', $slug) 
     ->where('code', '=', $lang) 
     ->first();