Log message #4223384

# At Username Text
# Jan 22nd 2020, 17:18 matt deleting the table i felt was a good approch
# Jan 22nd 2020, 16:33 neon1024 ..and allows easier re-indexing
# Jan 22nd 2020, 16:26 ricksaccous that would invalidate the key constraint though, but i don't know if that wuold stop you from destroying/recreating the table
# Jan 22nd 2020, 16:26 ricksaccous that's what i tend to do
# Jan 22nd 2020, 16:26 ricksaccous after that use logic to refill the data if the data is necessary
# Jan 22nd 2020, 16:26 ricksaccous destroy the table in a migration and recreate it
# Jan 22nd 2020, 16:25 ricksaccous when trying to change the primary key to another column it's usually not worth it
# Jan 22nd 2020, 16:25 matt i think it worked but when it tried to backfill the table it sets all to 0
# Jan 22nd 2020, 16:25 matt PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' in /home/vagrant/Apps/clubtrac.local/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php:16
# Jan 22nd 2020, 16:24 ndm https://book.cakephp.org/phinx/0/en/migrations.html#working-with-foreign-keys
# Jan 22nd 2020, 16:24 matt will try that
# Jan 22nd 2020, 16:23 ndm So there's a foreign key constraint that you need to drop first
# Jan 22nd 2020, 16:23 matt gives me this error
# Jan 22nd 2020, 16:22 matt DOException: SQLSTATE[HY000]: General error: 1553 Cannot drop index 'PRIMARY': needed in a foreign key constraint in /home/vagrant/Apps/clubtrac.local/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php:16
# Jan 22nd 2020, 16:22 ndm Also what does "doesn't work" mean exactly?
# Jan 22nd 2020, 16:22 ndm Have you changed your respective CakePHP table class accordingly too?
# Jan 22nd 2020, 16:21 matt doesnt work
# Jan 22nd 2020, 16:21 matt i tried this
# Jan 22nd 2020, 16:21 matt ``` $table->addColumn('id','integer', [ 'length' => 11, 'null' => false, 'default' => null, ]); $table->changePrimaryKey(['id']);```
# Jan 22nd 2020, 16:20 ndm @matt There's the `changePrimaryKey()` method: https://book.cakephp.org/phinx/0/en/migrations.html#changing-the-primary-key
# Jan 22nd 2020, 16:15 matt ```attendees(id,member_id,occ_id) - new table```
# Jan 22nd 2020, 16:15 em That could clarify this situation a little bit i think
# Jan 22nd 2020, 16:15 matt ```attendees(member_id,occ_id) - old table```
# Jan 22nd 2020, 16:14 matt i need the new primary key to be a 'id' column
# Jan 22nd 2020, 16:14 matt How do i change the primary key of table that was earlier using a composite key from a migration?
# Jan 22nd 2020, 16:13 ndm I wonder if the validator should maybe pass a custom flag into the context argument, so that one could properly determine how the method is invoked
# Jan 22nd 2020, 16:12 ndm You're welcome
# Jan 22nd 2020, 16:10 em @ndm now i see that isEmptyAllowed() has no data parameter at all :) And i got about custom validation, Thank you :)
# Jan 22nd 2020, 16:09 ndm You need to understand that these rules are invoked in different scenarios, and account for no data being present accordingly. In forms, the rule will be invoked to determine whether to set the `required` attribute on the HTML element. If you can't work out something that works in both form context and actual data validation context, then you'll probably need a custom validation rule instead.
# Jan 22nd 2020, 16:06 em @ndm Okay, so i should not use $validator->notEmptyString() for that purpose, right ?
# Jan 22nd 2020, 16:04 ndm The form context couldn't pass any data even if it wanted to, as the validator API (`\Cake\Validation\Validator::isEmptyAllowed()`) doesn't support that
# Jan 22nd 2020, 16:02 ndm If you are referring to it being invoked when you create form controls (as opposed to validation being executed when you patch/create your entity with the submitted form data), then yes, that is expected.
# Jan 22nd 2020, 16:00 slackebot passed to validator, but it does not. Is it expected like this ?
# Jan 22nd 2020, 16:00 em @ndm In controller i get my user entity with $this->Users->get($id); Then i pass this user entity into the view. There i create form like this: ```<?php echo $this->Form->create($user); ?> <?php echo $this->Form->control('firstname') ?> <?php echo $this->Form->control('lastname', ) ?> <?php echo $this->Form->submit(__('Save')); ?> <?php echo $this->Form->end(); ?>``` So, i do not specify any context for this form. I expected that data will be
# Jan 22nd 2020, 15:58 ndm you're welcome
# Jan 22nd 2020, 15:57 ndm @em In which context (application wise) is the data empty? Are you specifically refering to when its invoked as a part of creating form controls? In that case it's expected to be empty, as the form context doesn't try to pass in any data
# Jan 22nd 2020, 15:56 crayfishuk @ndm thanks :)
# Jan 22nd 2020, 15:50 crayfishuk Good advice re being familiar with the destination - obvious when you say it out loud :grinning:
# Jan 22nd 2020, 15:50 crayfishuk Good point. We've been in v2 for years. Only recently getting our heads round v3!
# Jan 22nd 2020, 15:49 em ```$validator->notEmptyString('name', __('Specify your name'), function($context) { if (isset($context['data']['role'])) { return $context['data']['role'] === 'partner'; } return false; });``` I have trouble with $context[‘data’]. Somehow it is always empty even if i add entity to $this->Form->create($user); Does anyone have any ideas ? I use cake 4 version
# Jan 22nd 2020, 15:49 slackebot the point that you'd be able to create a robust application with it, that will answer lots of upgrading questions, and make it easier in general.