Hi folks!

I think this time I need some help.

In my application I have Extension(s) and Codec(s); they are joined
together by an Extension hasAndBelongToMany Codec relationship.

The tables involved in the process are:
* tab_extensions
* tab_codecs
* tab_extension_codecs

When I delete an extension, I just flag it as deleted but I don't
remove the record from the database. Therefore, I would like the
extension_codecs to be flagged deleted as well.

Everything seems to work just fine, apart my custom 'deleteQuery' that
is not invoked!

Here is my Extension model:

class ExtensionCodec extends AppModel
         {
                var $primaryKey = "extension_codec_id";
                var $useTable = "extension_codecs";

                var $hasAndBelongsToMany = array(
                        'Codec' =>
                                array(
                                        'className'              => 'Codec',
                                        'joinTable'              => 
'extension_codecs',
                                        'foreignKey'             => 
'extension_id',
                                        'associationForeignKey'  => 'codec_id',
                                        'unique'                                
 => 'true',
                                        'with'                                  
 => 'ExtensionCodec',
                                        'deleteQuery'                    => 
'UPDATE tab_extension_codecs (deleted) SET
deleted = TRUE WHERE tab_extension_id = \'{$__cakeID__$}\''
                                )
                        );
         }

This is the output of the SQL debug when I try to set deleted = true
for one of the extensions:

(default) 22 queries took 69 ms
Nr      Query   Error   Affected        Num. rows       Took (ms)
1       SELECT table_name as name FROM INFORMATION_SCHEMA.tables WHERE
table_schema = 'public';                0       5       5
2       SELECT DISTINCT column_name AS name, data_type AS type, is_nullable
AS null, column_default AS default, ordinal_position AS position,
character_maximum_length AS char_length, character_octet_length AS
oct_length FROM information_schema.columns WHERE table_name =
'tab_extensions' AND table_schema = 'public' ORDER BY position          0       
12      7
3       SELECT DISTINCT column_name AS name, data_type AS type, is_nullable
AS null, column_default AS default, ordinal_position AS position,
character_maximum_length AS char_length, character_octet_length AS
oct_length FROM information_schema.columns WHERE table_name =
'tab_codecs' AND table_schema = 'public' ORDER BY position              0       
3       4
4       SELECT DISTINCT column_name AS name, data_type AS type, is_nullable
AS null, column_default AS default, ordinal_position AS position,
character_maximum_length AS char_length, character_octet_length AS
oct_length FROM information_schema.columns WHERE table_name =
'tab_extension_codecs' AND table_schema = 'public' ORDER BY position
0       4       4
5       SELECT DISTINCT column_name AS name, data_type AS type, is_nullable
AS null, column_default AS default, ordinal_position AS position,
character_maximum_length AS char_length, character_octet_length AS
oct_length FROM information_schema.columns WHERE table_name =
'tab_contexts' AND table_schema = 'public' ORDER BY position            0       
5       4
6       SELECT "Extension"."extension_id" AS "Extension__extension_id",
"Extension"."fullname" AS "Extension__fullname", "Extension"."number"
AS "Extension__number", "Extension"."password" AS
"Extension__password", "Extension"."email" AS "Extension__email",
"Extension"."context_id" AS "Extension__context_id",
"Extension"."caller_id" AS "Extension__caller_id",
"Extension"."caller_description" AS "Extension__caller_description",
"Extension"."pickup_groups" AS "Extension__pickup_groups",
"Extension"."created" AS "Extension__created", "Extension"."modified"
AS "Extension__modified", "Extension"."deleted" AS
"Extension__deleted" FROM "tab_extensions" AS "Extension" WHERE
"Extension"."extension_id" = '22' LIMIT 1               0       1       1
7       SELECT "Codec"."codec_id" AS "Codec__codec_id",
"Codec"."description" AS "Codec__description", "Codec"."code" AS
"Codec__code", "ExtensionCodec"."extension_codec_id" AS
"ExtensionCodec__extension_codec_id", "ExtensionCodec"."extension_id"
AS "ExtensionCodec__extension_id", "ExtensionCodec"."codec_id" AS
"ExtensionCodec__codec_id", "ExtensionCodec"."deleted" AS
"ExtensionCodec__deleted" FROM "tab_codecs" AS "Codec" JOIN
"tab_extension_codecs" AS "ExtensionCodec" ON
("ExtensionCodec"."extension_id" = '22' AND
"ExtensionCodec"."codec_id" = "Codec"."codec_id")               0       4       
1
8       SELECT COUNT(*) AS "count" FROM "tab_extensions" AS "Extension"
WHERE "Extension"."extension_id" = '22'         0       1       0
9       SELECT COUNT(*) AS "count" FROM "tab_extensions" AS "Extension"
WHERE "Extension"."extension_id" = '22'         0       1       0
10      UPDATE "tab_extensions" SET "extension_id" = '22', "fullname" =
'aaa', "number" = '123', "password" = '123', "email" = 'bbb',
"context_id" = '3', "caller_id" = 'ccc', "caller_description" = 'ddd',
"pickup_groups" = 'e,4,5,', "created" = '2010-03-14 17:25:34',
"modified" = '2010-03-14 17:25:34', "deleted" = TRUE WHERE
"tab_extensions"."extension_id" = '22'          1       0       39
11      SELECT "ExtensionCodec"."codec_id" AS "ExtensionCodec__codec_id"
FROM "tab_extension_codecs" AS "ExtensionCodec" WHERE
"ExtensionCodec"."extension_id" = '22'          0       4       0
12      SELECT "ExtensionCodec"."extension_codec_id" AS
"ExtensionCodec__extension_codec_id" FROM "tab_extension_codecs" AS
"ExtensionCodec" WHERE "ExtensionCodec"."extension_id" = '22' AND
"ExtensionCodec"."codec_id" IN ('2', '3', '4', '6')             0       4       0
13      SELECT "Codec"."codec_id" AS "Codec__codec_id",
"Codec"."description" AS "Codec__description", "Codec"."code" AS
"Codec__code", "ExtensionCodec"."extension_codec_id" AS
"ExtensionCodec__extension_codec_id", "ExtensionCodec"."extension_id"
AS "ExtensionCodec__extension_id", "ExtensionCodec"."codec_id" AS
"ExtensionCodec__codec_id", "ExtensionCodec"."deleted" AS
"ExtensionCodec__deleted" FROM "tab_codecs" AS "Codec" JOIN
"tab_extension_codecs" AS "ExtensionCodec" ON
("ExtensionCodec"."extension_id" IN ('11', '12', '13', '14') AND
"ExtensionCodec"."codec_id" = "Codec"."codec_id")               0       0       0
14      DELETE FROM "tab_extension_codecs" WHERE extension_codec_id IN
('11', '12', '13', '14')                4       0       1
15      SELECT COUNT(*) AS "count" FROM "tab_extension_codecs" AS
"ExtensionCodec" WHERE "ExtensionCodec"."extension_codec_id" = '11'             0
1       0
16      INSERT INTO "tab_extension_codecs" ("deleted",
"extension_codec_id", "extension_id", "codec_id") VALUES (FALSE, '11',
'22', '2')              1       0       1
17      SELECT COUNT(*) AS "count" FROM "tab_extension_codecs" AS
"ExtensionCodec" WHERE "ExtensionCodec"."extension_codec_id" = '12'             0
1       0
18      INSERT INTO "tab_extension_codecs" ("deleted",
"extension_codec_id", "extension_id", "codec_id") VALUES (FALSE, '12',
'22', '3')              1       0       1
19      SELECT COUNT(*) AS "count" FROM "tab_extension_codecs" AS
"ExtensionCodec" WHERE "ExtensionCodec"."extension_codec_id" = '13'             0
1       0
20      INSERT INTO "tab_extension_codecs" ("deleted",
"extension_codec_id", "extension_id", "codec_id") VALUES (FALSE, '13',
'22', '4')              1       0       1
21      SELECT COUNT(*) AS "count" FROM "tab_extension_codecs" AS
"ExtensionCodec" WHERE "ExtensionCodec"."extension_codec_id" = '14'             0
1       0
22      INSERT INTO "tab_extension_codecs" ("deleted",
"extension_codec_id", "extension_id", "codec_id") VALUES (FALSE, '14',
'22', '6')              1       0       0

Do you have any idea of what it is going on here?

You see, it is just trying to delete the records and not updating them
by using my custom deleteQuery!

I would really appreciate any help!

Thanks in advance,
Gianluca.

Check out the new CakePHP Questions site http://cakeqs.org and help others with 
their CakePHP related questions.

You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en

Reply via email to