cakephp 4 – zamiana przecinków na kropki -automat

Wartości finansowe typu decimal(10, 2):

class InvoicePosition extends Entity
{
    protected function _setNetto($netto)
    {
        return str_replace(',', '.', $netto);         // zamienia przecinki na kropki w Invoices.netto
    }
}

Javascript – parseFloat nie akceptuje przecinka ’,’

netto = parseFloat( ($(this).val()).replace(',', '.') );

$("#netto").val( netto.toFixed(2) )

Czytaj dalej cakephp 4 – zamiana przecinków na kropki -automat

cakePHP – dociągnięcie modelu powiązanego

mmm

$quest = $this->Questionnaires->get($id, [
          'contain' => [
               'Answers', 
               'Creators' => function($q) {
                      return $q->select(['id', 'firstname', 'lastname']);
                }]
           ]);

// Dociągamy dodakowe modele dla uprawnionych
if($this->hasAccess()) {
    $this->Questionnaires->loadInto($quest, [
            'Projects' => function($q) { 
                              return $q->select(['id', 'manager_id']); 
                            }
             ]);
}

cakePHP – beforeSave

CompaniesTable,

$this == Companies, $this->Projects - powiązana tabela
use Cake\Event\EventInterface;
use Cake\Database\Expression\QueryExpression;

class CompaniesTable extends Table
{

public function beforeSave(EventInterface $event, $entity, $options)
{
  // zmienione pole manager_id
  if($entity->isDirty('manager_id')) {
      $entity->prev_manager_id = $entity->getOriginal('manager_id') ;  // pole przed zmianę

      // podstawienie innej kolumny, wyrażenia
      $set_prev_manager_id = new QueryExpression('prev_manager_id = manager_id');  

      $this->Projects->updateAll(
        [
          $set_prev_manager_id,
          'manager_id' => $entity->manager_id 
        ], 
        [
          'company_id' => $entity->id 
        ]
      );
  }
}

Mysql – sortowanie ciągu znaków jako INT

Sortowanie po 3 kategoriach. Ostatnia kategoria jest typu znakowego  ale przechowuje numery np. 5, 5a, 5b, 6, 6a. Chcemy sortować tak jak liczby

 $query->order(['Procedures.proc_type_id', 'Procedures.proc_category_id']);

-- numer jest polem typu varchar, wartości: 5, 5a, 5b, 6, 6a ...
$query->orderAsc( function($exp, $q) {
     return $q->func()->cast('numer','UNSIGNED');
});

Przydatne

blokowanie zmiany usera przez modyfikację formularza

// metoda edit()
$this->Articles->patchEntity($article, $this->request->getData(), [
            'accessibleFields' => ['user_id' => false]
        ]);

Zdefiniowanie zalogowanego usera dla całego kontrolera

public function initialize() : void
{
   parent::initialize();
   $user_id = $this->request->getAttribute('identity')->getIdentifier();
}

Auth – opcje

// Parametry logowania zalogowanego użytkownika
$email   = $this->Authentication->getIdentity()->get('email');
$user_id = $this->Authentication->getIdentity()->get('id');
$user_id = $this->Authentication->getIdentifier();


$user_id = $this->request->getAttribute('identity')->getIdentifier();

Czytaj dalej Auth – opcje