2010-01-06 2 views
0

J'ai une question un peu compliquée pour les experts en cakephp.Cacher les données du modèle en fonction de l'existence de l'ID dans un autre tableau

Fondamentalement, j'ai créé une table db appelée "emplacements". Chaque mois, je vais recevoir cette table au format csv d'un client. Malheureusement, au lieu de mettre à jour cette table, je vais devoir la vider et réimporter tous les enregistrements. Malheureusement, je ne peux pas modifier cette table du tout.

Fonctionnalité sage, les utilisateurs auront la possibilité de regarder un affichage de ces enregistrements, et être capable de choisir de cacher certains d'entre eux. Cet attribut "caché" doit être persistant et survivre à la purge mensuelle de tous les enregistrements.

Je travaillais tout ça hier. Ce que j'ai fait, c'était créer une table séparée appelée location_properties (les colonnes étaient: id (int), location_id (clé étrangère), is_hidden (boolean)). Lors de l'affichage de ces enregistrements, il vérifie simplement si "is_hidden == true".

Tout cela était très bien (ET TRAVAILLANT!), Mais mon patron a gommé les travaux. Il m'a dit de supprimer la colonne "is_hidden" de la table car elle serait plus efficace. Que je devrais être capable de vérifier simplement l'existence du location_id pour le cacher ou le montrer.

Cela ne semble pas si simple. Quelqu'un sait comment je peux arracher ça? J'ai essayé tout ce que je pouvais penser.

Répondre

0

Votre patron a tort.

Il est plus efficace d'ajouter votre colonne que de supprimer et réimporter les emplacements tous les mois. A-t-il dit qu'il était moins efficace, ou avez-vous fait un véritable benchmark pour voir si cela nuit trop à la performance?

+0

bien sûr que non. Je sais que c'est fou de le faire de cette façon, et le fait est que j'ai travaillé toute la journée sur ce sujet et ne crois pas que je peux l'accomplir comme il le veut. –

0

À première vue, je vois 2 solutions:

1) ajouter un tableau de conditions ('Location.id' => 'NOT NULL')

2) changement type de jointure à jointure droite

J'espère que cela aide

Questions connexes