2016-01-26 36 views
0

我在顯示刀片模板中的查詢結果時有點掙扎。基礎知識:我有兩張桌子;國家和發行人。國家模式與發行人有很多關係,反之亦然。這兩種關係在模型中都有適當的定義。我試圖顯示包含國家名稱(國家)的發行人名單。我的查詢在發行者控制器中如下:在刀片中顯示加入查詢的結果

 $issuers = ISSUER::join('countries', 'issuers.country_id', '=', 'countries.id') 
      ->select('issuers.*', 'countries.nation') 
      ->orderBy('nation', 'asc') 
      ->orderBy('author', 'asc') 
      ->get(); 

該查詢工作和dd();顯示它爲每個發行者返回一個包含所有發行者數據的陣列以及相應的國家名稱作爲國家。完善。但是,當我試圖在我看來顯示這一點時,我碰壁了。我的第一次嘗試只是使用

     @foreach($issuers as $issuer) 
        <tr> 
        <td>{{ $issuer->id }}</td> 
        <td>{{ $issuer->nation }}</td> 
        <td>{{ $issuers->author }}</td> 

這會返回$ nation上的未定義變量。我不知道爲什麼會發生這種情況,因爲我不想訪問這種關係。我只是試圖訪問從查詢返回的數組的結果。這種關係在這一點上應該是不相關的。無論如何,試圖使用我試試的關係

     @foreach($issuers as $issuer) 
        <tr> 
        <td>{{ $issuer->id }}</td> 
        @foreach($issuer->nation as $nation) 
        <td>{{ $issuer->nation }}</td> 
        @endforeach 
        <td>{{ $issuers->author }}</td> 

其中返回和foreach()錯誤中提供的無效參數。接下來我嘗試使用該方法...

     @foreach($issuers as $issuer) 
        <tr> 
        <td>{{ $issuer->id }}</td> 
        @foreach($issuer->Country() as $nation) 
        <td>{{ $issuer->nation }}</td> 
        @endforeach 
        <td>{{ $issuers->author }}</td> 

這不會拋出錯誤,但也不會返回任何內容。該柱被簡單地跳過,其他所有被回顯的東西都會向左移動一列。

我有點迷失在這裏,我認爲這是因爲我的大腦固執地堅持這個想法,即訪問查詢結果的元素而不是關係的元素,所以我無法弄清楚爲什麼我需要一個單獨的循環,或者該循環應該如何工作。任何幫助,將不勝感激。

編輯:改變了最後一部分,因爲我輸入了錯誤。

回答

0

回答此問題,以供稍後發現的任何人使用。我能直接從查詢結果通過改變查詢從

->select('issuers.*', 'countries.nation') 

訪問國家的價值沒有模型關係

->select('issuers.*', 'countries.nation as nation') 

從他們的,我只是訪問的價值,我會一切:

    <td>{{ $issuer->id }}</td> 
       <td>{{ $issuer->nation }}</td> 
       <td>{{ $issuers->author }}</td>