web-dev-qa-db-fra.com

ajouter un nouvel élément dans laravel objet de collection

Je veux ajouter un nouvel élément dans le tableau $ items, je ne veux pas utiliser les jointures pour certaines raisons.

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

que dois-je faire, s'il vous plaît aider, merci d'avance

40
TalibGill

Il semble que tout soit correct selon Laravel docs , mais vous avez une faute de frappe

$item->Push($product);

Devrait être

$items->Push($product);

Je veux aussi penser que la méthode que vous recherchez est put

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

Comme mentionné ci-dessus, si vous souhaitez utiliser comme nouvel élément votre collection interrogée, vous pouvez utiliser:

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

mais si vous souhaitez ajouter un nouvel élément à chaque élément demandé, vous devez procéder comme suit:

    $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_witely_element_you_want peut être ce que vous souhaitez que votre élément soit nommé comme produit par exemple

2
Alpy