php 记录集在 Laravel @foreach 替代

php recordset in Laravel @foreach alternative

你能告诉我如何正确地做到这一点吗?

我正在使用 Laravel 8。将记录集传递到页面,我稍后会在页面中使用 foreach 循环处理该页面。如何在没有 forloop 的情况下从中获取数据?我用

避开了它
@foreach ($sites as $site)
     <img src="{{$site->url}}" alt="Pic" id="bg-img" onclick = fill() />
@break
@endforeach

我使用了 foreach 循环,因为它稍后会在页面中运行。

是的,它有效,但我想知道正确的方法。

我也试过:

{{$site->url}}
{{$sites->url}}
$sites['url']

我是 Laravel 的新手,对 php 中的数组类型的东西很垃圾。

谢谢

我可以问这种改进类型的问题吗?

我刚刚解释了你的一些陈述。

例如,您有这样的数据:

----------------------------
| id | url                 |
----------------------------
| 1  | http://domain-1.tld |
| 2  | http://domain-2.tld |
| 3  | http://domain-3.tld |
| 4  | http://domain-4.tld |
| 5  | http://domain-5.tld |
----------------------------

例如,您有查询:

$sites = Site::get();

get 方法 returns 包含查询结果的 Illuminate\Support\Collection 实例,其中每个结果都是 PHP stdClass 对象的实例。您可以通过将列作为对象的 属性 进行访问来访问每一列的值:

@foreach ($sites as $site)
    {{ $site->url }}
@endforeach
  • 如果用$sites->url会报错,因为没有对象:

    Property [url] does not exist on this collection instance.
    
  • 如果用$sites['url']也会报错

  • 集合转数组时可以使用$site['url']:

    $sites = Site::get()->toArray();
    

@break

当你使用break时,会结束当前forforeachwhiledo-whileswitch的执行结构。

根据您的代码,它只需要第一次迭代。

@foreach ($sites as $site)
    @break // stop
@endforeach

How do I get data out of it without a forloop?

您似乎想要检索单行。您可以使用 first() :

$site = Site::first();
$site->url;

如果你想打印 array.then 的所有值,没有循环是没有办法的。如果你想打印单个 value.it 只能在 index/key 中打印。

例如。 //打印所有值 $array = ['car','bike','truck'];

foreach($array as $value) 回声$值; endforeach

//这个打印单值 回显 $值[0];