4

私はLaravelのコツをつかもうとしています。Laravel 4 を使用しています。現在、「Products」テーブルと「Images」テーブルの 2 つのテーブルがあります。商品には多くの画像を含めることができ、画像は商品に属します。

だから私は2つのモデルを持っています:

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');
    }

}

今、リソースの「インデックス」ページを構築しているので、コントローラーで Product::all() を実行し、これをビューに送信します。

ビューで foreach を実行し、すべての製品をループします。しかし今、私は製品で表示する画像を取得したいと考えています. しかし、たとえば最初の画像を取得する方法がわかりません。

私がそう$product->imagesすると、製品に関連するすべての画像のオブジェクトを取得します。

実行すると$product->images->urlエラーが発生します (未定義のプロパティ 'url')

これも試してみまし$product->images->first()->urlたが、エラーが発生します(非オブジェクトのプロパティを取得しようとしています)

私は何を間違っていますか?

4

3 に答える 3

3

熱心な読み込みを試しましたか?

foreach (Product::with('images')->get() as $product)
{
    echo $product->images->first()->url;
}
于 2013-04-11T11:23:11.440 に答える
1

imagesプロパティは、ループできる配列のようなプロパティです。

foreach ($product->images as $image) {
    echo $image->url;
}

または、最初の 1 つだけが必要な場合は、インデックスにアクセスできます。

$product->images[0]->url;
于 2013-04-11T06:52:43.233 に答える
0

次の PHP 関数の使用を試すことができます。

$first_image = array_shift($product->images);

$first_image は 1 つの画像オブジェクトになり、画像の URL へのアクセスは簡単になります: $first_image->ulr

注: テストしていませんが、動作するはずです。我々に教えてください。

于 2013-04-11T07:30:33.273 に答える