IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PHP Discussion :

Ajouter une donnée avant insertion [1.x]


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut Ajouter une donnée avant insertion
    Bonjour,

    Je souhaite ajouter une donnée à une table avant insertion voila comment j'essaie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function save(Doctrine_Connection $conn = null)
        {
    		$this->setCoeff(1) ;
    		$result = parent::save($conn);
    		return $result;
    	}
    J'ai l'erreur suivante :

    Couldn't call Doctrine_Core::set(), second argument should be an instance of Doctrine_Record or Doctrine_Null when setting one-to-one references. Je sais pas vers quoi m'orienter.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    A priori ton code me parait presque viable. J'y rajouterait juste un test pour ne le faire qu'à la création ( isNew() ).

    Pour l'erreur, je pense qu'il y a une erreur dans ton schéma (shema.yml) ou dans l'utilisation que tu en fait et une confusion entre les attributs de l’entité et les relations.

    Si tu pouvais donner ton shema.yml, je pourrais en dire plus.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut
    Voici mon schema

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    annonce:
      actAs: { Timestampable: ~ }
      tableName: annonces
      columns:
        titre:
          type: string(45)
          notnull: true
        soustitre:
          type: string(45)
          notnull: true
        descriptif:
          type: string(500)
          notnull: true
        photo:
          type: string(150)
          notnull: true
        prix:
          type: float(10,2)
          notnull: true 
        valider:
          type: boolean(0)
          default: 0
        expiration:
          type: timestamp
          default: null
        type_id:
          type: integer
          notnull: true 
        categorie_id:
          type: integer
          notnull: true 
        coeff_id:
          type: integer	  
      relations:
        categorie:
          foreignAlias: annonces
        type:
          foreignAlias: annonces
        coeff:
          foreignAlias: annonces	  
     
    categorie:
      columns:
        name:
          type: string(150)
          unique: true
          notnull: true
        pere:
          type: integer(4)
          notnull: true
          default: '0'
     
    coeff:
      columns:
        prix:
          type: float(10,2)
          notnull: true
        marge:
          type: float(18,16)
          notnull: true
        nbticket:
          type: integer(20)
          notnull: true
        comvendeur:
          type: float(18,16)
          notnull: true
     
    type:
      columns:
        name:
          type: string(50)
          notnull: true

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Il est bon ton schéma, il est même très bon, il est même tellement bon que je ne trouve pas la moindre critique à y formuler

    Par contre, je pense avoir l'erreur.

    Soit tu crées un pointeur sur l'objet coeff qui correspond à ce que tu veux et tu l'ajoute.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function save(Doctrine_Connection $conn = null)
    {
      if ($this->isNew())
      {
        $coef = doctrine_core::getTable('coeff')->findOneById('1');
        $this->setCoeff($coeff) ;
      }
      return parent::save($conn);
    }
    Soit tu positionnes le 1 dans la liaison.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function save(Doctrine_Connection $conn = null)
    {
      if ($this->isNew())
      {
        $this->setCoeffId(1) ;
      }
      return parent::save($conn);
    }
    code non testé.

    Note ici c'est setCoeffId().

    Perso, je ferrais la 1 avec une recherche sur le premier après un tris desc sur les coefs. En principe cela retourne le 1, mais s'il a été supprimé, cela ne bloque pas l'application. Ou un paramètre facilement modifiable.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut
    Merci ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Crypter une donnée avant insertion
    Par ruyeken dans le forum SQL
    Réponses: 2
    Dernier message: 21/10/2013, 18h16
  2. Réponses: 2
    Dernier message: 19/03/2012, 11h53
  3. Vérifier données avant insertion dans une base de données
    Par massbbc dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/09/2010, 11h08
  4. [ODBC] Récupération d'une donnée pour insertion dans une autre table
    Par rom950 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h13
  5. [Cookies] Ajouter une donnée à un cookie
    Par jack1234 dans le forum Langage
    Réponses: 2
    Dernier message: 14/01/2006, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo