在 laravel 集合对象中添加新元素

2022-08-30 08:15:22

我想在数组中添加新元素,由于某些原因,我不想使用连接。$items

$items = DB::select(DB::raw('SELECT * FROM items WHERE items.id = '.$id.'  ;'));
        foreach($items as $item){
            $product = DB::select(DB::raw(' select * from product
                   where product_id = '. $id.';' ));

            $item->push($product);
        }

我该怎么办?


答案 1

根据Laravel文档,看起来一切都是正确的,但是你有一个错别字

$item->push($product);

应该是

$items->push($product);

push方法将项追加到集合的末尾:

我也想认为你正在寻找的实际方法是put

$items->put('products', $product);

put方法设置集合中给定的键和值


答案 2

如上所述,如果您希望将查询的集合添加为新元素,则可以使用:

    $items = DB::select(DB::raw('SELECT * FROM items WHERE items.id = '.$id.'  ;'));
    foreach($items as $item){
        $product = DB::select(DB::raw(' select * from product
               where product_id = '. $id.';' ));

        $items->push($product);
        // or 
        // $items->put('products', $product);
    }

但是,如果您希望向每个查询的元素添加新元素,则需要执行以下操作:

    $items = DB::select(DB::raw('SELECT * FROM items WHERE items.id = '.$id.'  ;'));
    foreach($items as $item){
           $product = DB::select(DB::raw(' select * from product
                 where product_id = '. $id.';' ));
    
          $item->add_whatever_element_you_want = $product;
    }

add_whatever_element_you_want可以是您希望元素命名的任何内容(例如产品)。


推荐