【问题标题】:Laravel: 2nd level relationship only fetching single rowLaravel:二级关系只获取单行
【发布时间】:2018-12-04 09:02:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: php laravel orm eloquent


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果项目数据库中有多个图像,则必须使用hasMany() insted of belongsTo()

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

      何时使用 belongTo()?

      假设您有帖子和评论模型。现在你想要发表评论。这是 hasMany 关系的逆关系。要定义 hasMany 关系的逆关系,请在调用 belongsTo 方法的 Comment(子)模型上定义关系函数

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

      【讨论】:

        猜你喜欢
        • 2015-06-29
        • 1970-01-01
        • 2015-10-24
        • 2015-03-09
        • 2018-12-13
        • 1970-01-01
        • 2017-05-30
        • 2022-11-17
        • 2022-01-01
        相关资源
        最近更新 更多