我一直在尝试掌握 Laravel 的窍门。我正在使用 Laravel 4。 现在我有两个表,一个“产品”表和一个“图像”表。 一个产品可以有很多图片,一张图片属于一个产品。
所以我有两个模型:
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');
}
}
现在我正在构建资源的“索引”页面,所以我在 Controller 中执行 Product::all() 并将其发送到 View 。
在 View 中,我执行了一个 foreach 并遍历了所有产品。但现在我想要一张图片来展示产品。但我似乎无法弄清楚如何获得,例如,第一张图片。
当我执行 $product->images
时,我得到了与产品相关的所有图像的对象。
当我执行 $product->images->url
时出现错误(未定义的属性“url”)
我试过 $product->images->first()->url
这也给出了一个错误(尝试获取非对象的属性)
我做错了什么?
最佳答案
你试过预加载吗?
foreach (Product::with('images')->get() as $product)
{
echo $product->images->first()->url;
}
关于php - Laravel Eloquent 从关系中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942195/