//CartController
$itens = CartItem::where('id_cart', $cart->id)->with('product')->get();
return response()->json($itens);
此代码返回包含购物车项目数据和相关产品的JSON。但我也想要返回产品的图片,该图片位于 ProductImages 表中。
在我的模型中 CartItem.php 我有
public function product(){
return $this->belongsTo('App\Product', 'id_product');
}
在我的模型中 Product.php 我有
public function images(){
return $this->hasMany('App\ProductImages', 'id_product');
}
但是,如果我这样做
$itens = CartItem::where('id_cart', $carrinho->id)->with('product')->with('image')->get();
我收到错误
在模型[App \ CartItem]
上调用未定义的关系[images]
答案 0 :(得分:6)
您可以尝试:
CartItem::where('id_cart', $carrinho->id)->with('product.images')->get();
要急切加载嵌套关系,您可以使用" dot"语法。
答案 1 :(得分:2)
您应该使用with()
加载两个表:
CartItem::where('id_cart', $cart->id)
->with('product', 'product.images')
->get();
您可以阅读解释here(请参阅嵌套的预先加载部分)。
答案 2 :(得分:2)
你应该使用嵌套的预先加载函数:
$books = App\Book::with('author.contacts')->get();
https://laravel.com/docs/5.3/eloquent-relationships#eager-loading
答案 3 :(得分:0)
就像这样使用
$itens = CartItem::where('id_cart', $carrinho->id)->with('product','images')->get();