Php 在调用关系中包含一列透视表

Php 在调用关系中包含一列透视表,php,laravel,laravel-5.5,Php,Laravel,Laravel 5.5,假设我们有一个PriceList模型,如下所示: class PriceList extends Model { protected $primaryKey = 'price_list_id'; public function products() { return $this->belongsToMany(Product::class, 'price_lists_products', 'price_list_id', 'product_id')

假设我们有一个
PriceList
模型,如下所示:

class PriceList extends Model
{

    protected $primaryKey = 'price_list_id';

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

}
另一方面,
产品
类似于:

class Product extends Model
{
    public function price_lists()
    {
        return $this->belongsToMany(PriceList::class, 'price_lists_products', 'product_id', 'price_list_id')->withPivot('price');
    }
}
产品模型有许多列,如
产品id
标题
说明
创建,
活动

此外,还有一个名为
price\u list\u products
的数据透视表,包括以下字段:

price_list_id
product_id
price
现在我想选择附加到特定价目表的所有产品,但只获取一些选定列以及透视表中的
price
列。为此,我写道:

public function prices(Request $request, PriceList $price_list)
    {
        $prices =
            $price_list->products()->select('products.product_id', 'created_at')->get();

        return $prices;
    } 
这将返回:

[
    {
        "product_id": 1,
        "created_at": "2017-12-11 12:21:49",
        "pivot": {
            "price_list_id": 1,
            "product_id": 1,
            "price": "3000.00"
        }
    },
    {
        "product_id": 2,
        "created_at": "2017-12-14 07:52:22",
        "pivot": {
            "price_list_id": 1,
            "product_id": 2,
            "price": "6000.00"
        }
    }
]
但我希望结果采用以下格式:

[
        {
            "product_id": 1,
            "created_at": "2017-12-11 12:21:49",
            "price": "3000.00"
        },
        {
            "product_id": 2,
            "created_at": "2017-12-14 07:52:22",
            "price": "6000.00"
        }
    ]
您可以使用
map()

您可以使用
map()

应该给你想要的结果

应该给你想要的结果

$prices = $price_list->products()->select('products.product_id', 'created_at')->get();

$prices = $prices->map(function($item) {
    $item->price = $item->pivot->price;
    return $item;
 });

return $prices;
$prices =$price_list->products()->select('products.product_id', 'created_at')->get();


$prices  = $prices->map(function($price){

   return $price->pivot;

});

$prices->dd();