Bonjour,
Je souhaite mettre à jour le champ "laboratory" de ma table "orders detail" avec le nom du laboratoire qui traite le produit commande.
J'arrive à créer mon array, récupérer les valeurs, mais je n'arrive pas à mettre à jour le champ avec le nom du laboratoire en question.
J'aurais donc besoin de votre expertise, merci d'avance, Marc
Ci-après toutes les infos nécessaires :
Champs de ma table 'orders_detail'
id | orderID | producttypeID | productnameID | laboratory
225 | 206 | 4 | 26 |
226 | 206 | 1 | 1 |
Le champ à mettre à jour est le champ 'laboratory'
- Une commande peut contenir plusieurs produits, comme on peut le voir en observant le champ 'orderID'. La commande '206' comporte 2 produits.
- Chaque produit est élaboré dans un laboratoire spécifique (par ex. Cuisine, Boulangerie, Traiteur etc.).
- 3
Dans mon cas, je devrais renseigner ce champ avec le laboratoire respectif, ce qui donnerait :
id | orderID | producttypeID | productnameID | laboratory
225 | 206 | 4 | 26 | Cuisine
226 | 206 | 1 | 1 | Boulangerie
Je génère donc une array avec la requête suivante pour récupérer le type de produit 'producttypeID' et le laboratoire 'laboratory' :
Array retournée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /* QUERY */ /* GET THE LABORATORY(-IES) */ $laboratory = DB::table('orders_detail') ->join('laboratories','orders_detail.producttypeID', '=', 'laboratories.id') ->select('orders_detail.producttypeID','laboratories.laboratory') ->where('orderID', '=', $id) ->get('laboratory'); /* dd($laboratory); */
Je souhaite mettre à jour ma table avec la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Collection {#3639 ▼ #items: array:2 [▼ 0 => {#3636 ▼ +"producttypeID": 4 +"laboratory": "Cuisine" } 1 => {#3637 ▼ +"producttypeID": 1 +"laboratory": "Boulanger" } ] }
le no de commande ('orderid') doit être égal a l'ID de la commande créée et insérée dans la table "orders".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DB::table('orders_detail') ->where('orders_detail.orderID', '=', $id) ->where('orders_detail.producttypeID',$laboratory['producttypeID']) ->update(['laboratory'=> $laboratory]);
Le no du type de produit ('producttypeid') doit être égal à la valeur "producttypeid" retournée par mon array.Si c'est le cas alors le champ "laboratory" doit être mis à jour de la manière suivante ;
si je teste la derniere requete ci-dessus, elle me retourne bien l'ID, mais aucune valeur 'producttypeID'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 id | orderID | producttypeID | productnameID | laboratory 225 | 206 | 4 | 26 | Cuisine 226 | 206 | 1 | 1 | Boulangerie
Mon souci doit donc être dans la manière dont je récupère ma valeur de l'array ;
->where('orders_detail.producttypeID',$laboratory['producttypeID'])
Mais aussi dans la manière de mettre à jour le champ en question avec ;
->update(['laboratory'=> $laboratory]);
Partager