我有一个名为random\u img的数据库表。里面有10行10幅图像。
我将从公共/图像/随机中提取图像
我想使用数据库,以便将循环设置为随机抽取(1)。我想在我的英雄形象中使用。(每页刷新新图像)
我应该将数据库查询放在哪里,以便全局使用它?或者我如何使用
RandomImgsController
那么它正在全球范围内使用?
我创建了一个路由文件,因此可以在需要时将其用作包含。
路线:
Route::post('/layouts/inc/random-img','RandomImgsController@randomimg')->name('random-img');
包括:
@include('layouts.inc.random-img')
内部包括:
@foreach ($randomimg as $rand)
<span class="hero-image">
<img src="/images/random/{{$rand->file_name}}" class="img--max--hero blur-img">
</span>
@endforeach
随机imgscontroller:
(这应该放在哪里,以便我可以在全球范围内使用)
public function randomimg()
{
$randomimg = DB::table('randomimg')->orderBy(DB::raw('RAND()'))->get();
return view('random-img',compact('randomimg'));
}}
这就是我想在我的网站的每个页面上实现的目标:
@php
$randomimg = DB::table('randomimg')->orderBy(DB::raw('RAND()'))->get()->take(1);
@endphp
@foreach ($randomimg as $rand)
<span class="hero-image">
<img src="/images/random/{{$rand->file_name}}" class="img--max--hero blur-img">
</span>
@endforeach
有什么更干净的方法可以做到这一点?
更新时间:
我可以访问
images
DB现在在所有视图中,但我有一个问题。
在我的
App\Http\ViewComposer\ImageComposer.php
文件我有:
public function compose(View $view)
{
$view->with('foo', Image::inRandomOrder()->get()->take(1));
}
在我可以使用的任何视图中
{{$foo}}
从“我的图像”表中获取随机行,但数据以如下字符串形式出现:
[{“id”:10,“alt”:“Image alt Tag”,“title”:“Image title”,“file\u name”:“10.jpg”}]
当我试图只抓取像这样的单个列时
{{$foo->file_name}}
我得到错误:
此集合实例上不存在属性[file\u name]。
我如何获取这样的单个列:
{{$foo->alt}}
,则,
{{$foo->title}}
和
{{$foo->文件名}}
然后在我的视图中清晰地输出它们?例如,我需要
{{$foo->文件名}}
要这样渲染,请执行以下操作:
5.jpg
。
更新2:
我想出来了。必须使用
@foreach
因为我用的是
get()
方法
@foreach($foo as $f)
{{$f->file_name}}
@endforeach
仍然想知道是否有一种方法可以在不使用get()方法的情况下完成。但这会奏效的。