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

Tal*_*ain 44 php laravel-5 laravel-5.1

我想在$ 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);
        }
Run Code Online (Sandbox Code Playgroud)

我应该怎么做,请提前帮助thnx

Pas*_*nes 87

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

$item->push($product);
Run Code Online (Sandbox Code Playgroud)

应该

$items->push($product);
Run Code Online (Sandbox Code Playgroud)

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

$items->put('products', $product);
Run Code Online (Sandbox Code Playgroud)

  • Laravel可能会考虑调用类似`pushWithKey(...)`来帮助清晰 (8认同)

Alp*_*lpy 14

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

    $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);
    }
Run Code Online (Sandbox Code Playgroud)

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

    $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;
    }
Run Code Online (Sandbox Code Playgroud)

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


Jso*_*owa 13

如果要将项目添加到集合的开头,可以使用prepend

$item->prepend($product, 'key');
Run Code Online (Sandbox Code Playgroud)