我想列出每个项目的所有图像,我试着像这样做,但它总是只返回1个图像。
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.'">';
}
}
}
上面的代码仅用于测试目的,我想要做的是在表格中显示它,在我的控制器中显示如下:
<tbody>
'
$images = $project->images()->get();
foreach($images as $image){
'
<tr>
<td><img src="'.$image->image_path.'"></td>
</tr>
'
}
'
</tbody>
答案 0 :(得分:0)
由于函数只能返回一次,因此您可能需要在内部foreach上执行不同的操作,例如将图像html连接到现有字符串。
那就是说,正确这样做的方法通常是返回$ images直接用在你构建html的模板中。
答案 1 :(得分:0)
我不确定这里发生了什么,但是如果你能够使用控制器和刀片模板,看起来你想在Laravel中做一些相对简单的事情。
首先,从控制器开始(保留所有应用程序逻辑):
// 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]);
}
然后,在您的刀片模板中,您可以轻松地迭代项目和图像:
// 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>
希望这会有所帮助。如果这一切都没有意义,你可以随时查看文档,它们写得非常好!
请务必查看控制器,刀片模板和Eloquent ORM - 关系部分:)