web-dev-qa-db-ja.com

laravelコレクションオブジェクトに新しい要素を追加します

$ 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);
        }

事前にt​​hnxを助けてください

40
TalibGill

すべてが正しいように見えます Laravel docs ですが、タイプミスがあります

$item->Push($product);

あるべき

$items->Push($product);

また、あなたが探している実際の方法はputだと思います

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

上記のように、クエリされたコレクションを新しい要素として使用する場合は、次を使用できます。

    $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は、たとえば要素がproductのように命名されることを望むものであれば何でも構いません

2
Alpy