laravel - 使用 Laravel Eloquent 模型显示数据库中的数据
问题描述
所以,我对 Laravel 很陌生,我想要实现的是将一些字符串从我的数据显示到页面。我正在使用 Eloquent 模型,但我无法弄清楚我在这里做错了什么。我在下面附上了我的一些代码。我希望我说得够清楚。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Product;
class ProductsController extends Controller
{
public function index()
{
$products = Product::all();
return view('products.index')->with('products', $products);
}
这是我希望显示数据的地方。
@extends ('layouts.app')
@section ('content')
<div class="container-fluid">
<h1>Products</h1>
@if(count($products) > 1 )
@foreach ($products as $product)
<div class="well">
<h3>{{$product->prod_name}}</h3>
</div>
@endforeach
@else
<p>No product found</p>
@endif
</div>
@endsection
更新:问题出在我的循环逻辑上 因为我的数据库中只有一项,所以我的循环应该是>= 1而不是> 1
@if(count($products) >= 1 )
@foreach ($products as $product)
<div class="well">
<h3>{{$product->prod_name}}</h3>
</div>
@endforeach
@else
<p>No product found</p>
@endif
解决方案
让我们修复您的代码并使用正确的方法。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Product;
class ProductsController extends Controller
{
public function index()
{
$products = Product::all();
return view('products.index', compact('products'));
}
请注意我是如何将数组 viacompact
作为view
函数的第二个参数传递的。你也可以使用view('products.index', ['products' => $products])
,我只是更喜欢紧凑,因为它更干净。
@extends('layouts.app')
@section('content')
<div class="container-fluid">
<h1>Products</h1>
@if(!$products->isEmpty())
@foreach($products as $product)
<div class="well">
<h3>{{ $product->prod_name }}</h3>
</div>
@endforeach
@else
<p>No products found.</p>
@endif
</div>
@endsection
注意我是如何使用 的isEmpty
,它检查一个集合(从 Eloquent 获得)是否为空。
推荐阅读
- python - 可变数量的前导零
- go - 在 golang 模板之间共享变量
- aws-lambda - AWS Lambda 战略爱好者
- html - 子像素渲染使内部 div 小于父级
- python - 在 QAbstractTableModel tableView 中输入行为为 key_down
- python - 点安装。不安装更新的包
- java - 如何为执行异常编写测试
- pdflib - PDFlib - 使用文档页面保存自定义元数据?
- amazon-web-services - 调用端点 url 时未找到 AWS API Gateway 404 页面错误
- java - 无法让 findAll 在 Elasticsearch 中工作