Laravel使用地图收集并包含

I'l*_*ack 4 php laravel laravel-5

availablemap收藏中的钥匙有问题。

available键的使用contains方法。如果$ unavailableProducts中产品ID的值不包含在$ products中,则应返回true($value->product_id == $product->id)

我做错什么了?

    $unavailableProducts = $this->unavailableProducts();
    $products = $this->products->all();

    $allProducts = $products->map(function ($product) use($unavailableProducts) {
    return [
        'id'            => $product->id,
        'title'         => $product->title,
        'available'     => $unavailableProducts['result']->contains(function ($value, $key) use ($product) {
            if ($value->product_id == $product->id) {
                return false;
            }
            return true;
        }),
    ];
});
Run Code Online (Sandbox Code Playgroud)

cra*_*bly 5

首先,确保这$unavailableProductions['result']是一个集合。

其次,contains像这样更改您的方法:

$unavailableProducts = $this->unavailableProducts();
$products = $this->products->all();

$allProducts = $products->map(function ($product) use($unavailableProducts) {
    return [
        'id'            => $product->id,
        'title'         => $product->title,
        'available'     => $unavailableProducts['result']->contains('id', $product->id),
    ];
});
Run Code Online (Sandbox Code Playgroud)

$unavailableProducts['result']->contains('id', $product->id)将确定$unaviableProductions['result']集合有一个关键id当值$product->id