我有products表和countries表,它们假设彼此之间存在多对多关系,但包含关系的附加参数。
所以在产品中有产品id,名称
在国家中有国家id、名称
在产品所在国,有国家标识、产品标识、价格
产品型号:
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');
}
}
所以我知道我可以用-
感觉我需要做很多工作才能按国家为产品定价。
Country::find(1)->products->first()->pivot->price
首先将此关系功能更改为国家/地区。php
public function products()
{
return $this->belongsToMany(Product::class,'pivot_table_name','country_id','product_id')->withPivot('price','sku');
}
然后尝试这个查询。
$countries = Country::with(['products'])->get();
如果要传递参数,请使用此查询
$countries = Country::with([
'products' => function ($query) use ($productId) {
$query->where('id', $productId);
}
])->where('id', $countryId)->first();