Jul
22nd

Zend_Db_Table : L’objet Select

zend-frameworkJe fais une lecture ces derniers temps de la documentation de Zend Framework. Je suis dans la section traitant de la classe Zend_Db_Table et de l’API de l’objet Select.

Jusqu’à maintenant, ce que je peux voir de Zend_Db_Table me va bien, mais je n’aime vraiment pas l’utilisation proposée pour les requêtes Select.

Exemple : Utilisation simple

$table = new Bugs();

$select = $table->select();
$select->where('bug_status = ?', 'NEW');

$rows = $table->fetchAll($select);

Exemple : Utiliser une table intermédiaire par jointure avec fetchAll()

$table = new Bugs();

$select = $table->select();
$select->where('bug_status = ?', 'NEW')
       ->join('accounts', 'accounts.account_name = bugs.reported_by')
       ->where('accounts.account_name = ?', 'Bob');

$rows = $table->fetchAll($select);

Je sais que je peux continuer de pousser mes requêtes en string comme dans le bon vieux temps, et je trouve ça beaucoup plus lisible et efficace. Ceci dit, j’aimerais savoir quels sont les avantages d’utiliser la syntaxe montrée ci-dessus. Quelqu’un peut me vendre l’idée?

9 Responses to “Zend_Db_Table : L’objet Select”

  1. Moi non plus j’ai jamais été un fan de cette méthode :P je serais pas en mesure de pouvoir te vendre l’idée, désolé : /

  2. À moins que je me trompe, le point est de rendre les requêtes “database agnostic”. Donc, qu’on écrive pour n’importe quel DB, on va toujours écrire de la même manière. Aussi, une application écrite avec ça pourrait être portée vers une autre DB sans trop de difficulté.

  3. Ouin, c’est le seul point que je vois également…

    Ceci dit, les cas réels de passage d’un système de BD à un autre sont plutôt rare, je trouve ça plutôt lourd pour gérer l’improbable…

  4. Moi ce que j’aime bien avec cette façon c’est de pouvoir créer des morceaux de requêtes, les passer dans des méthodes qui ajoute des clauses (genre un order by, un filtrage, etc…) et de l’exécuter ensuite.

  5. Maxence says:

    Si c’est correctement utilisé, ça protège des injections SQL. C’est aussi plus souple pour composer tes requêtes. Tu peux également paginer facilement des requêtes, même complexe, avec Zend_Paginator.

  6. Maxence says:

    Tu n’as pas non plus à te soucier de l’ordre des instructions GROUP BY, LIMIT, etc…

  7. J’avoue que j’aime mieux utiliser cette méthode que de concaténer des chaines de caractères de requêtes SQL.

    @Maxence: La plupart des API de bases de données (MySQLi, PDO…) permettent maintenant de faire des requêtes compilées (même genre de syntaxe, avec des “?”). Ça prévient les attaques par injection SQL et peu aussi accélérer les requêtes. Il ne faudrait donc pas voir la prévention des injection SQL comme un argument en la faveur de cette manière de construire des requêtes puisque l’API natif offre déjà cette possibilité.

  8. Maxence says:

    @Antoine C’est vrai, mais les requêtes préparées ne sont pas toujours plus rapides que les requêtes standard.

  9. Maxence says:

    … mais apparemment Zend_Db prépare systématiquement ses requêtes. Donc mon argument ne tient pas…

Leave a Reply

  • lexapro drugs
  • erection supplement
  • medication naproxen
  • acne treatment product
  • pet medicine on line
  • lamictal withdrawal
  • pill to cat
  • how to sperm more
  • online canadian drugs
  • treatment for type 2 diabete
  • viagra dosing
  • diet supplements that work
  • buy medication online
  • hypertension drug
  • anxiety disorders
  • how to reduce high blood pressure
  • order diovan
  • free weight loss diets
  • senna constipation
  • cipro sale
  • order viagra cheap
  • levaquin 750mg
  • canada pharmacy
  • weight loss foods
  • cholesterol medicine
  • pill zocor
  • healthy dog food recipe
  • alprazolam cod
  • cheap baclofen
  • effects side viagra
  • aricept generic
  • dental care for cat
  • dog products online
  • psoriasis product
  • carisoprodol
  • lower blood pressure yourself
  • regular heart rate
  • side effects of synthroid
  • insomnia disorder
  • cheap levitra online
  • osteoporosis treating
  • treatment of breast cancer
  • blood clot medication
  • discount canadian pharmacy
  • drug store on line
  • withdrawal zoloft
  • natural viagra products
  • buy weight loss pill
  • building your body
  • dog supplements
  • ovulating clomid
  • osteoporosis small people
  • medicines for sinus infections
  • anti malaria drugs
  • discount medications
  • headache treatment
  • tramadol generic
  • viagra price
  • buy cheap cholesterol free recipe
  • prescription chlamydia
  • cialis for free
  • online viagra soft
  • on line weight loss program
  • side effects of antibiotics
  • stopping blood pressure medicine
  • help for edema
  • dog vitamin c
  • where can i order phentermine online
  • buy zanaflex
  • tramadol cod online
  • remedy gout
  • drugstores
  • online valium no prescription
  • tooth whitening gel
  • cheap prescription drugs
  • antibiotics online
  • online weight loss
  • muscle mass building
  • internet pills
  • water pills side effects
  • order allegra
  • body acne
  • alcoholism and medication
  • treating diabetes
  • anti wrinkles
  • bph prostate
  • medications for dementia
  • hoodia gordonni
  • sale ultram
  • flu vs cold
  • cheapest cialis index
  • increase muscle mass
  • effects of folic acid
  • cialis viagra on line
  • social anxiety treatment
  • buy cheap soma online
  • diet pills online
  • newest weight loss pill
  • cialis pro
  • drug spironolactone
  • chest muscle pain
  • general health care
  • prescription medications online
  • increasing penis size
  • drugs for blood clots
  • ear infection treatments
  • healthy natural cat food
  • cialis and levitra viagra
  • asian flu
  • order levitra cheap price
  • natural hair loss treatments
  • online pain management
  • mail order pain medications
  • anxiety disorder treatment
  • european online pharmacy
  • acute insomnia
  • dry skin treatment
  • dog health
  • where can i buy viagra online?
  • treatment for dry skin
  • ovulating clomid
  • hair loss treatment prices
  • buy ambien online cheap
  • buy cialis delived next day
  • congestive heart failure pulmonary hypertension prognosis
  • thyroid and dogs
  • weight loss after childbirth
  • canada cialis online
  • cheapest online pharmacy
  • vitamin d in osteoporosis
  • clonazepam dosage
  • natural herbs for weight loss
  • oral antidiabetic medications
  • discount weight loss pill
  • online propecia cheap
  • order flagyl
  • viagra buying online
  • drugs for breast cancer
  • best weight loss pills
  • doxycycline pregnant
  • bronchitis diarrhea
  • colon cancer treatment
  • care of a cat
  • dosage of lexapro
  • dietary products
  • body acne medications
  • vitamin c for dogs
  • prilosec 20
  • pain meds no prescription
  • generic viagra 100mg
  • benadryl capsules
  • zithromax cost
  • discount weight loss pill
  • how to cure insomnia
  • herbal pain remedies
  • blood pressure medicenes
  • buying viagra in uk
  • antibiotic for acne
  • how to treat prostate cancer
  • fast muscle gain
  • heart attack women
  • celebrex tablets
  • malaria medicines
  • cholesterol medications available
  • hand skin problems
  • sleep disorder and medication
  • recurring sinus infection
  • weight loss support group online
  • prednisone alternative
  • try viagra for free
  • very cheap viagra
  • health insurance for dogs
  • foot pain
  • natural asthma cure
  • super flu
  • aspirin plus
  • natural acne remedy
  • hair loss treatment prices
  • high blood pressure side effects
  • treatment for anxiety
  • drug prescription
  • gabapentin medication
  • knee osteoporosis
  • but cialis in us
  • generic viagra lowest prices
  • fda weight loss
  • levaquin urinary
  • paxil for depression
  • how to get prescribed pain killers
  • drugs for dogs
  • cure for throat infection
  • cheapest price on phentermine
  • cialis on line
  • rheumatoid arthritis pain
  • treatment hepatitis c
  • cheap blue pill
  • cheap soft viagra
  • antifungal drug
  • claritin medicine
  • new antibiotic drug