Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

[A la recherche de la personne qui pourra m'aider] Concaténer 2 champs de la bd et contenu de la commande
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1
SUJET:

[A la recherche de la personne qui pourra m'aider] Concaténer 2 champs de la bd et contenu de la commande

#28461
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

[A la recherche de la personne qui pourra m'aider] Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 11 Mois
Karma: 0  
Bonjour, j'aimerai afficher le contenu de la commande dans commande. J'ai donc récupérer le nombre et le nom des produits commandés. Mais je ne sais pas comment concaténer ces 2 champs (surtout qu'il me faudra que je mette le nombre en gras...)

Voici la requête sql:
$collection = Mage::getResourceModel('sales/order_collection')
->addAttributeToSelect('status')
->joinAttribute('billing_firstname', 'order_address/firstname', 'billing_address_id', null, 'left')
->joinAttribute('billing_lastname', 'order_address/lastname', 'billing_address_id', null, 'left')
->addExpressionAttributeToSelect('billing_name',
'CONCAT({{billing_firstname}}, " ", {{billing_lastname}})',
array('billing_firstname', 'billing_lastname'))
->joinTable('sales_flat_order_item',
'order_id=entity_id',
array( 'qty_ordered' => 'qty_ordered', 'name' => 'name' ))
->groupByAttribute('increment_id')
;


J'ai utilisé ceci(en référence au nom et prénom mais sans succès):
->addExpressionAttributeToSelect('contenu_commande',
'CONCAT({{qty_ordered}}, " ", {{name}})',
array('qty_ordered', 'name'))


J'ai même essayer de les concaténer dans _prepareColumns mais ça ne marche pas.

Quelqu'un aurait une idée?
Merci d'avance
 
Dernière édition: 23/03/10 à  17:44 Par Gwynbleidd.
L'administrateur a désactivé l'accès public en écriture.
#28472
Pyksel
Platinum Boarder
Messages: 1401
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin lapierredelune blog.magentoo.fr pyksel@live.fr Lieu: Nice Date anniversaire: 12/09

Re:Concaténer 2 champs de la bd

Il y a 1 Année, 11 Mois
Karma: 19  
tu essaye de concatener deux elements de deux tables...

utilise donc les noms des tables ;)
 
Dernière édition: 11/03/10 à  19:01 Par Pyksel.
L'administrateur a désactivé l'accès public en écriture.
#28521
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 11 Mois
Karma: 0  
qty_ordered et name sont dans la même table:sales_flat_order_item
et non pas dans 2 tables distinctes (et d'après l'exportation dans phpmyadmin, ces 2 éléments ne sont pas des clés étrangères, d'ailleurs il est rarement dit qu'il y a des clés étrangères...)

Suis-je dans la bonne voie avec addExpressionAttributeToSelect?
 
Dernière édition: 23/03/10 à  11:41 Par Gwynbleidd.
L'administrateur a désactivé l'accès public en écriture.
#28525
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 11 Mois
Karma: 0  
dsl du double post(j aime pas trop mais au cas si quelqu'un a regardé mon message)

donc il faut bien que je référence la table(je verrai comment faire) car j'ai voulu arrondir le nombre de commande ça marque une erreur alors que quand je fais le grand_total ça ne marque pas d'erreur

je vais chercher comment faire pour la référence de la table(j'avais trouvé un fichier qui le montrait mais je sais plus où il est...)
 
Dernière édition: 23/03/10 à  11:41 Par Gwynbleidd.
L'administrateur a désactivé l'accès public en écriture.
#28813
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 10 Mois
Karma: 0  
j'ai fait plusieurs test et je n'arrive pas à utiliser le nom des tables.
exemple:
->addExpressionAttributeToSelect( 'index', 'ROUND({{qty_ordered}},0)', 'qty_ordered')

Ça ne marche pas car il faut que j'utilise le nom de la table. mais je ne sais pas si c'est au deuxième ou au troisième ou aux 2 derniers paramètres.(les tests ne sont pas concluants)
et en prenant cet exemple(exemple pour le joinField trouvé dans le fichier Abstract.php)
('country_name', 'directory/country_name', 'name', 'country_id=shipping_country', "{{table}}.language_code='en'", 'left')

je ne sais pas s'il faut que je mette "table" ou "nomdelatable" et si je met les "{{}}" ou pas

J'ai fait plusieurs test mais marche pas...

J'ai vu aussi (en parcourant le net):

<strong>->joinAttribute(’billing_street’, ‘customer_address/street’, ‘default_billing’, null, ‘left’)</strong>

Je me suis dit "super, je vais pouvoir mettre en gras le nombre de de produits (sans le nom du produit) avant de concaténer"
Mais ça ne marche pas, j'ai un parse error(je l'aime celui la...)

Est-ce une erreur du site ou c'est possible?(je ne l'ai vu que sur un seul site)


edit: il y a t'il une fonction qui permettrai de rajouter des valeurs dans une colonne?
exemple: M. X a commandé 2 produits. Je sais mettre le 1er produit dans la colonne (avec addColumn) mais pas pour le 2ème.

J'ai regardé les fichiers et je n'ai trouvé aucune méthode addColumn à part pour rajouter une colonne dans la base de donnée)

Je pense que c'est dans le framework mais je ne trouve pas la liste des méthodes du framwork.(je vais continuer à chercher)
 
Dernière édition: 23/03/10 à  11:42 Par Gwynbleidd.
L'administrateur a désactivé l'accès public en écriture.
#28848
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 10 Mois
Karma: 0  
j'ai réussi a concaténer les 2 champs. j'ai fait:
->joinTable('sales_flat_order_item',
'order_id=entity_id',
array('contenu_cmde' => 'CONCAT(ROUND(qty_ordered,0)," ", name)'))

Maintenant je ne peux plus mettre en gras le nombre(au pire si c'est pas possible je le dirai à mon chef de stage)

Par contre le plus gros problème c'est que je ne vois pas comment faire pour que chaque commande j'ai tout le contenu de la commande qui s'affiche. Je ne sais pas si je le fais dans le _prepareCollection et l'idée serait:
tant que tu n'a pas changé de numéro de commande, concaténer le contenu de la commande

ou dans _prepareColumns et l'idée serait:
tant que tu n'a pas changé de numéro de commande, ajouter dans la colonne contenucommande, la valeur X

Bien sur je ne sais pas comment m'y prendre pour les 2 idées
 
Dernière édition: 23/03/10 à  11:43 Par Gwynbleidd.
L'administrateur a désactivé l'accès public en écriture.
#28938
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 10 Mois
Karma: 0  
quelqu'un aurait une idée pour que sur pour un numéro de commande, j'affiche tout son contenu?(j'ai réussi pour un produit commandé mais quand il y en a plusieurs...)
 
Dernière édition: 23/03/10 à  11:43 Par Gwynbleidd.
L'administrateur a désactivé l'accès public en écriture.
#29245
Gwynbleidd
Junior Boarder
Messages: 29
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:Concaténer 2 champs de la bd et contenu de la commande

Il y a 1 Année, 10 Mois
Karma: 0  
bon petit up car j'y arrive toujours pas...

mon chef de stage me dit de concaténer le contenu de la commande dans _prepareCollection

Il me dit de faire environ $collection[0]['contenu_cmde'] donc j'essaye de faire un test simple:
Code :

$collection->addExpressionAttributeToSelect('test',
                'CONCAT('. $collection[0]['contenu_cmde'].', " ", {{billing_lastname}})',
                array($collection[0]['contenu_cmde'], 'billing_lastname'));



mais j'ai comme message d'erreur:
Fatal error: Cannot use object of type Mage_Sales_Model_Mysql4_Order_Collection as array in C:\wamp\www\magento\magento\app\code\core\Mage\Adminhtml\Block\Sales\Order\Grid.php on line 66

la ligne 66 c'est

'CONCAT('. $collection[0]['contenu_cmde'].', " ", {{billing_lastname}})',


si j'arrive a le faire, après ça ne fera pas un truc jolie car le 1er enregistrement contiendra tout le contenu de la commande mais les autres enregistrement contiendront un produit... C'est pas terrible mais bon, si j'y arrive déjà à faire ça ça serait pas mal.


Quelqu'un peut m'aider? Je ne demande pas à ce qu'on me donne la réponse mais qu'on me donne des pistes
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1
Modérateur: admin, Narno, Gabriiiel, CaPiT