Laravel:2级关系仅获取单行

时间:2018-12-04 09:02:25

标签: php laravel orm eloquent

我正在使用Laravel 5.6,并且我在3个表之间有关联。购物车->购物车->图片 这是我的控制器代码:

$cart = Cart::where('created_by_id', Auth::user()->id)->with('cartDetails')->first();

这是我的购物车型号:

public function CartItem()
    {
        return $this->hasMany('App\Http\models\CartItem', 'cart_id')->with('images');
    }

这是cartItem的模型:

public function images()
    {
        return $this->belongsTo('App\Http\models\ProductImage', 'item_id', 'product_id');
    }

现在即使我在数据库中有多张图像,我也只能得到一张图像。它总是拾取最后插入的图像。 我要获取所有图像,或者至少要获取第一个而不是最后一个。 请帮忙。

2 个答案:

答案 0 :(得分:2)

您应该使用hasMany()关系而不是belongsTo()

public function images()
{
    return $this->hasMany('App\Http\models\ProductImage', 'item_id', 'product_id');
}

答案 1 :(得分:1)

如果项目数据库中有多个图像,则必须使用由hasMany()插入的belongsTo()

public function images()
{
    return $this->hasMany('App\Http\models\ProductImage', 'item_id', 'product_id');
}

使用时 belongTo()

假设您具有发布和评论模型。现在,您要评论帖子。这与hasMany关系的逆关系。要定义hasMany关系的逆关系,请在Comment(child)模型上定义一个关系函数,该函数调用EmiratesTo方法

 public function post()
    {
        return $this->belongsTo('App\Post');
    }