laravel与信息的关系

时间:2017-04-24 13:20:26

标签: php laravel eloquent many-to-many

我有产品表和国家/地区表,他们假设彼此存在多对多关系,但包含关系的附加参数。

所以在产品中有产品ID,名称

在国家/地区有国家/地区ID,名称

product_country中的

有country_id,product_id,price

产品型号:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;


class Product extends Model
{
    /**
    * Get the countries for the product.
    */
    public function countries()
    {
        return $this->belongsToMany('Country');
    }

}

国家模式:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;


class Country extends Model
{
    /**
    * Get the countries for the product.
    */
    public function products()
    {
        return $this->belongsToMany('Product');
    }

}

所以我知道我可以使用       - > withPivot( '价格') 将它添加到枢轴关系,但我无法弄清楚 - 是什么是查询产品列表的最佳方式,例如按国家/地区,也许我的结构是错误的但我希望最终能够得到所有的产品的价格当然是特定国家的。

感觉我需要做很多工作才能按国家/地区为产品定价。

Country::find(1)->products->first()->pivot->price

1 个答案:

答案 0 :(得分:1)

首先将此关系函数更改为Country.php

>>> tuple((dict[num] for num in numlist))
('entry 1', 'entry 3', 'entry 4')

然后尝试此查询。

 public function products()
    {
        return $this->belongsToMany(Product::class,'pivot_table_name','country_id','product_id')->withPivot('price','sku');
    }  
  

如果您想传递参数,请使用此查询

 $countries = Country::with(['products'])->get();