Log message #4223375

# At Username Text
# 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.
# Jan 22nd 2020, 15:49 ndm @crayfishuk That really depends on the complexity of the application. You most likely won't get it into a working state just by using the upgrade tool, I've yet to see even one application for which that worked, but if it's not to complex, and largely follows the conventions, then an upgrade could be the way to go to avoid all the repetitive tasks. I'd always recommend to first make yourself familiar with the version that you're upgrading too, to
# Jan 22nd 2020, 15:48 crayfishuk Aha - found it :) https://github.com/rectorphp/rector
# Jan 22nd 2020, 15:45 crayfishuk Rector?
# Jan 22nd 2020, 15:44 ricksaccous so you have a series of upgrade scripts that an help
# Jan 22nd 2020, 15:44 ricksaccous there's also an upgrade script though that dereuromark created
# Jan 22nd 2020, 15:44 ricksaccous not sure if rector handles that
# Jan 22nd 2020, 15:44 ricksaccous that might be easier since you have rector
# Jan 22nd 2020, 15:43 crayfishuk @ndm Does that go for a 2.10 to 3.x migration too?
# Jan 22nd 2020, 15:10 kiwi_92 Indeed. That's what our plan is for this year. We were considering Laravel, but I have always liked Cake and hoped upgrading might be faster.