2016-03-30 11 views
0

私は各プロジェクトのすべての画像をリストしたいと思いますが、このようにしようとしましたが、常に1つの画像しか返しません。関数は一度しか返すことができるのでlaravelでコレクション内のコレクションをループする方法は?

<tbody> 
' 
$images = $project->images()->get(); 
foreach($images as $image){ 
' 
<tr> 
<td><img src="'.$image->image_path.'"></td> 
</tr> 
' 
} 
' 
</tbody> 

答えて

0

public function home() 
{ 
    $projects = Project::all(); //result : 1 

    foreach($projects as $project){ 
     $images = $project->images()->get(); 
     // dd($images); //result : 4 
     foreach($images as $image){ 
      return '<img src="'.$image->image_path.'">'; 
     } 
    } 
} 

上記のコードは、単にテスト目的であり、私は何をしたい私のコントローラでは、テーブルにこのような何かを、それを表示することですおそらく、イメージのhtmlを既存の文字列に連結するような、内部foreach上で異なることを行う必要があります。

つまり、これを行う方法は、通常、HTMLを構築するテンプレートで直接使用する$ imagesを返すことです。

+0

はいそのわずかテスト目的のために、私がどれだけ知らない、テーブルに表示されます$ projects変数の中の$ images変数をループします。 – Jason

0

ここでは何が起こっているのかよく分かりませんが、コントローラとブレードテンプレートを使用できる場合は、Laravelで比較的簡単なことをしたいようです。まず

は、あなたがあなたのコントローラ(そこにアプリケーション・ロジックのすべてを保つ)で始まる:

// views/projects.blade.php 

@foreach($projects as $project) 
<table> 
... 
    <tbody> 
    @foreach($project->images as $image) 
     <tr> 
     <td><img src="{{ $image->image_path }}"></td> 
     </tr> 
    @endforeach 
    </tbody> 
... 
</table> 
@endforeach 

</tbody> 
:ブレード・テンプレートでは、

// ProjectController.php 
public function home() 
{ 
    //-- grab all the projects, with all of their images 

    // Using with() will allow you to eager load those images 
    // from the database if they are Eloquent relationships. 
    $projects = Project::with('images')->get(); 

    //-- send those $projects to your view 

    // Using with() here will send that variable to your 
    // view accessible by the key. 
    return view('projects')->with(['projects' => $projects]); 
} 

その後、あなたは簡単にプロジェクトや画像を反復処理することができます

これが役に立ちます。これが意味をなさない場合は、いつでもドキュメントをチェックアウトできます。本当によく書かれています。

Laravel Docs

ブレードテンプレートと雄弁ORM、コントローラをチェックアウトしてください - 関係のセクション:)

+0

私のコントローラからビューにデータテーブルを返しています。列の1つで、テーブルを持つすべてのイメージをリストしたいと思います。 – Jason

+0

ブレードテンプレートを使用することをお勧めします(可能であれば@includeをデータテーブルの一部に使用することもできますか?)。コントローラーでHTMLを作成するとエラーが発生する傾向があります。 しかし、「返された1画像のみ」の問題を修正したい場合、@ Project707の答えは正しいです。 foreachイメージの値を 'return'する代わりに、値をエコーアウトするか、変数の最後に連結します。 – joshwhatk

関連する問題