2016-09-11 2 views
-1

Ich habe einige Tabellen:anzeigen Beiträge in der Kategorie (Laravel)

Kategorie:

id: 1 title: Shirt 
id: 2 title: Pant 
id: 3 title: Hat 

Produkt:

... (product has some columns and 1 col is category_id) 

Und was ich in Sicht angezeigt werden soll ist:

1. 5 newest posts for all categories 
2. 5 newest posts for each category 

Grundsätzlich sieht es so aus:

--* Title :All *-- 

5 Newest posts 

- * Titel: Hemd * -

5 neueste Beiträge, die category_id: 1

--* Title :Pant*-- 

5 Newest posts which category_id :2 

- * Titel: Hat * -

5 neueste Beiträge welche category_id: 3

Irgendwelche Ratschläge, ich habe auf Google gesucht, aber fand nicht die Antwort: ((

+0

Was ist Ihr Problem? Sie können dies leicht mit einer Abfrage erreichen. – MoeinPorkamel

+0

Was hast du probiert? –

+0

Im Grunde bin ich Neuling, ich weiß nicht, wie man das beheben kann :( –

Antwort

1

Da Sie zwei Tabellen haben Sie zwei Modelle schaffen würden, eine für die Kategorie und eine für das Produkt. Sie können dies tun, indem Sie php artisan make:model Category und php artisan make:model Product

ausführen Jetzt haben Sie diese Modelle in Ihrem App/Ordner.

Folgendes Ihr Kategoriemodell in App \ Kategorie

public function products() 
    { 
     return $this->hasMany('\App\Product', 'category_id', 'id'); 
    } 

Weiter zum Controller hinzufügen, die diese Daten und fügen Sie an der Spitze

use App\Category; 
use App\Product; 
  1. 5 neueste verarbeiten wollen Beiträge für alle Kategorien

    $ product = Produkt :: take (5) -> orderBy ('id', 'desc') -> get();

  2. 5 neuester Beitrag für jede Kategorie

    $ Kategorien = Kategorie :: get();

    foreach ($ Kategorien als $ Kategorie) { $ products [$ Category-> name] = $ Kategorie-> products() -> take (5) -> orderBy ('id', 'desc') - > bekommen(); }

Nun ist diese zur Ansicht weitergeben, ich ein „$ data“ Array wie verwenden, können die Inhalte dieses Arrays direkt einmal in den Ansichten wie so

$data = array(); 
$data['all_products'] = $product; 
$data['category_products'] = $products; 
bestanden zugegriffen werden

Dies kann dann als

weitergegeben werden
return View('products.detail', $data); 

wo products.detail Ihre Ansicht ist

Sie können nun Schleife durch diese Daten aus Ihrer Sicht als - * Titel: * Alle -

@foreach($all_products as $product) 
{{$product->name}} 
@endforeach 
+0

Sie sind da besten Dankeschön: d –

+0

Sie sind herzlich willkommen @ end_lesslove2012 – AceKYD

0

Wenn Sie Kategoriemodell wie diese:

class Category extends Model 
{ 
    public function posts() 
    { 
     return $this->hasMany('\App\Post', 'category_id', 'id'); 
    } 
} 

Sie können ganz einfach 5 Letzten Beitrag von jeder Kategorie nehmen:

$Categories = Category::get(); 

foreach ($Categories as $Category) { 
    $Posts = $Category->posts()->take(5)->orderBy('id', 'desc')->get(); // Get 5 Posts 
} 
+0

Aber wie kann ich es an die View übergeben? –

+0

Werfen Sie einen Blick hier: 'https: // laravel.com/docs/5.3/views, Aber Sie können immer php direkt im Blick (was schmutzig ist) – MoeinPorkamel

Verwandte Themen