Laravel Eloquent wählen Sie aus der Beziehung
Ich habe versucht, die hängen von Laravel. Ich bin mit Laravel 4.
Jetzt habe ich zwei Tabellen, eine "Produkte" - Tabelle und eine "Bilder" - Tabelle.
Ein Produkt kann beliebig viele Bilder und ein Bild zu einem Produkt gehört.
Also ich habe zwei Modelle:
class Product extends Eloquent {
public function images()
{
return $this->hasMany('Image');
}
}
class Image extends Eloquent {
protected $table = 'product_images';
public function product()
{
return $this->belongsTo('Product');
}
}
Nun Baue ich den 'index' - Seite von einer Ressource, so dass ich Produkt::all() in den controller und senden Sie diese an die view.
In der Ansicht ich einer foreach-Schleife und die Schleife über alle Produkte. Aber jetzt möchte ich, um ein Bild zu zeigen, mit dem Produkt. Aber ich kann nicht scheinen, um herauszufinden, wie man, zum Beispiel, das erste Bild.
Wenn ich $product->images
bekomme ich ein Objekt von allen Bildern auf das Produkt beziehen.
Wenn ich $product->images->url
bekomme ich eine Fehlermeldung (Undefined-Eigenschaft 'url')
Ich habe versucht $product->images->first()->url
das gibt auch eine Fehlermeldung (Trying to get property of non-object)
Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
images
- Eigenschaft ist ein array-wie die Eigenschaft, dass Sie können Durchlaufen.Alternativ, wenn Sie nur wollte, die erste, können Sie Zugriff auf den index.
$product->images[0]->url
bekomme ichUndefined offset: 0
. Wenn ich mit einer foreach-Schleife, es funktioniert. Wäre nicht wirklich nett zu haben, um eine Schleife verwenden, jedes mal, wenn ich will einfach nur, um ein Bild auf.$product->images[0]->url
scheint zu funktionieren!Haben Sie versucht, eager-loading?
Können Sie versuchen, mit der folgenden PHP-Funktion.
Dann, $first_image wird ein image-Objekt und den Zugriff auf die URL des Bildes sollte einfach sein: $first_image->ulr
Hinweis: Habe es noch nicht getestet, aber sollte funktionieren. Lassen Sie es uns wissen.