Wie würde ich ein Foto für ein Produkt anzeigen, wenn es viele Fotos mit dem Produkt verbunden sind. Zum Beispiel muss ich nur 1 Foto auf der Titelseite anzeigen, und ich möchte kein Karussell machen. Hier ist, was ich bisher:Limit 1 Foto von vielen anzeigen - Laravel 5.2
Wie Sie sehen können, im tut ein für-jede Schleife, und es wird die Anzeige aller Bilder mit diesem Produkt verbunden sind, möchte ich nur ein Bild angezeigt werden soll.
Hier ist, wie ich die Bilder bin Anzeige:
@foreach($products->photos as $photo)
<img src="/store/{{ $photo->thumbnail_path }}">
@endforeach
Mein Controller, um den Artikel für diese Seite anzuzeigen:
class ProductsController extends Controller {
/**
* Show all products
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function showProducts() {
// Get all products
$product = Product::all();
return view('admin.product.show', compact('product'));
}
}
Mein Produkt-Modell (verkürzt):
class Product extends Model {
/**
* One Product can have many photos.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function photos() {
return $this->hasMany('App\ProductPhoto');
}
}
Und das ist, wie ich meine Produkte Bilder Tabellen wie folgt aussehen:
Oh snapp, nette danken Ihnen einen boolean
featured
Spalte auf den Fotos Tisch und tun so etwas wie dieses Ould hinzuzufügen! – David@David Gern geschehen! Sie sollten auch das Laden von Fotos in Betracht ziehen (oder Ihre App erstellt eine Abfrage pro Zeile in dieser Tabelle, um die Fotos für jeden Datensatz zu suchen). '$ product = Product :: mit ('Fotos') -> get();' anstelle von '$ product = Product :: all();'. https://laravel.com/docs/5.2/eloquent-relationships#eager-loading – ceejayoz
In Ordnung, das habe ich getan. Werden die Fotos dadurch schneller geladen? – David