想實作這個結果,但是看不懂sql實作的邏輯
這是我的welcome.blade.php:
@extends('layouts/layout')
@section('content')
<div class="container-fluid">
@foreach ($categories as $category)
<h4>{{$category->category_name}}</h4>
<div class="row">
<div class="col-sm-4">
<h6>{{$category->item_name}}</h6>
</div>
</div>
@endforeach
</div>
@endsection
和我的控制器:
$categories = DB::table('items')
->join('categories', 'items.category_id', 'categories.id')
->select('items.item_name', 'items.item_price', 'categories.category_name', 'categories.description')
->groupBy('categories.category_name')
->get();
return view('welcome', 'categories'=> $categories]);
uj5u.com熱心網友回復:
如果需要,您可以在此處使用 QueryBuilder,但我建議您使用 Eloquent,除非您有特殊原因不使用它。
讓我們假設您有一個CategoryandItem模型,并且您已經在Category模型中定義了一個回傳模型的關系函式Item。
class Category extends Model
{
public function items()
{
// this assumes you're using standard naming conventions
return $this->hasMany(Item::class);
}
}
然后在你的Controller,你可能會做類似下面的事情來獲取categories和它們相關的items.
$categories = Category::with('items')->get();
return view('welcome', compact('categories'));
以上可以在需要時進行調整,以Category在您需要時將查詢限制為特定的。我們對相關記錄使用該with方法,eager load這樣我們就可以避免n 1 query problem.
最后,在您view可以迭代(回圈)categories和回圈相關的items(可能有多個)。
@forelse($categories as $category)
<h4>{{ $category->category_name }}</h4>
@forelse ($category->items as $item)
<p>{{ $item->item_name }}</p>
@empty
<p>No items</p>
@endforelse
@empty
<p>No results</p>
@endforelse
以上純粹是說明性的,理想情況下,您可以將上述內容分解為可重用的組件。
uj5u.com熱心網友回復:
由于您使用的是 Laravel,您可以使用 Eloquent關系:
class Category extends Model{
public function items{
return $this->hasMany(Item::class);
}
}
然后在您的控制器中:
$categories = Category::with('items')->get();
return view('welcome', ['categories'=> $categories]);
那么在你看來:
@foreach ($categories as $category)
<h4>{{$category->category_name}}</h4>
@foreach($category->items as item)
<div class="row">
<div class="col-sm-4">
<h6>{{$item->name}}</h6>
</div>
</div>
@endforeach
@endforeach
uj5u.com熱心網友回復:
$categories = DB::table("categories")->select("id", "category_name", "description")->get();
$items = DB::table("items")->select("category_id", "item_name", "price")->get();
view('welcome',compact("categories", "items"));
/////////////////////// BLADE ///////////////////////
<div class="container-fluid">
@foreach ($categories as $category)
@foreach($items as $item)
@if($category->id === $item->category_id)
<h4>{{$category->category_name}}</h4>
<div class="row">
<div class="col-sm-4">
<h6>{{$category->item_name}}</h6>
</div>
</div>
@endif
@endforeach
@endforeach
</div>
嘗試這個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/336396.html
標籤:拉拉维尔
上一篇:如何正確實作這個場景?
