提问者:小点点

Laravel与信息的关系


我有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

共1个答案

匿名用户

首先将此关系功能更改为国家/地区。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();