Sei sulla pagina 1di 23

cakephp

#cakephp
Sommario
Di 1

Capitolo 1: Iniziare con cakephp 2

Osservazioni 2

Versioni 2

Examples 2

Installazione o configurazione 2

Requisiti 2

Struttura della cartella CakePHP3 3

All'interno della cartella src 3

Primo progetto vuoto di base 4

Creazione iniziale e download (CakePHP 3.x) 4

Installa compositore 4

Crea il primo progetto CakePHP 4

Cottura / Model / View / Controller 4

Requisiti 6

CakePHP 2.x Introduzione di base 7

CakePHP ha alcune cartelle principali 7

Ora dovremmo passare alla nostra cartella dell'app 8

Capitolo 2: Gestione delle richieste Ajax 9

Examples 9

Esempio CakePHP 2.x di base 9

Richiesta Ajax in Cakephp 2.x 9

Capitolo 3: Istanziazione di modelli da un'altra origine dati 11

Osservazioni 11

Examples 11

Instantiating usa App :: uses 11

Modifiche al database al volo per modali 11

Capitolo 4: Suggerimenti per la codifica di CakePHP3 12

Examples 12

Creazione di un nuovo controller 12


Aggiungi il metodo beforeFilter () in Controller 12

Passare le variabili alla vista 12

Recupero dei dati dei post equivalenti a $ _POST 13

Carica un altro modello nel controller 14

Reindirizzamento a un'altra pagina dal Controller 14

Passaggio da variabile a azione dall'URL con reindirizzamento 14

Imposta o modifica il layout dell'applicazione 15

Imposta il layout della richiesta Ajax 16

Carica componenti in CakePHP 16

Cos'è il metodo initilaize ()? 17

Dati della stringa di query Retrive equivalenti a $ _GET 17

Creazione della classe Tabella (modello) 18

Associazioni di modelli in CakePHP 18

Titoli di coda 20
Di
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: cakephp

It is an unofficial and free cakephp ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official cakephp.

The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@zzzprojects.com

https://riptutorial.com/it/home 1
Capitolo 1: Iniziare con cakephp
Osservazioni
Questa sezione fornisce una panoramica di cosa sia CakePPp e perché uno sviluppatore
potrebbe volerlo utilizzare.

Dovrebbe anche menzionare qualsiasi argomento di grandi dimensioni all'interno di cakephp e


collegarsi agli argomenti correlati. Poiché la Documentation for cakephp è nuova, potrebbe essere
necessario creare versioni iniziali di tali argomenti correlati.

Versioni

Versione Data di rilascio

1.2.0 2008-12-26

1.3.0 2010-04-25

2.0.0 2011-10-17

3.0.0 2015/03/22

Examples
Installazione o configurazione

Requisiti
La seguente guida di installazione è per cakephp 2.8 e versioni successive. Tutte le versioni di
cakephp inferiori a 2.8 non sono compatibili con php 7

Server HTTP. Ad esempio: Apache. Avere mod_rewrite è preferito, ma in nessun modo richiesto.

• PHP 5.5.9 o successivo (incluso PHP 7).


• estensione PHP mbstring
• estensione PHP intl

Attenzione! Sia in XAMPP che in WAMP, l'estensione mbstring funziona come


impostazione predefinita. In XAMPP, l'estensione intl è inclusa ma devi decommentare
l'estensione = php_intl.dll in php.ini e riavviare il server attraverso il pannello di
controllo XAMPP. In WAMP, l'estensione intl è "attivata" per impostazione predefinita
ma non funziona. Per farlo funzionare devi andare alla cartella php (di default) C: \
wamp \ bin \ php \ php {versione}, copiare tutti i file che assomigliano a icu * .dll e

https://riptutorial.com/it/home 2
incollarli nella directory bin di apache C: \ wamp \ bin \ apache \ apache {version} \ bin.
Quindi riavviare tutti i servizi e dovrebbe essere OK.

Sebbene non sia richiesto un motore di database, immaginiamo che la maggior parte delle
applicazioni ne utilizzi uno. CakePHP supporta una varietà di motori di archiviazione di database:

• MySQL (5.1.10 o successivo)


• PostgreSQL
• Microsoft SQL Server (2008 o successivo)
• SQLite 3

Struttura della cartella CakePHP3

Dopo aver scaricato, questi sono i file e le cartelle che dovresti vedere:

• La cartella bin contiene gli eseguibili della console Cake.


• La cartella config contiene i file di configurazione utilizzati da CakePHP. Qui devono essere
archiviati i dettagli della connessione al database, il bootstrap, i file di configurazione di base
e molto altro.
• La cartella dei plug-in è dove vengono memorizzati i plugin utilizzati dalla tua applicazione.
• La cartella dei registri normalmente contiene i file di registro, a seconda della
configurazione del registro.
• La cartella src sarà dove verranno posizionati i file dell'applicazione.
• La cartella dei test sarà dove metterai i casi di test per la tua applicazione.
• La cartella tmp è dove CakePHP memorizza i dati temporanei. I dati effettivi memorizzati
dipendono da come è configurato CakePHP, ma questa cartella viene solitamente utilizzata
per memorizzare le descrizioni dei modelli e, a volte, le informazioni sulla sessione.
• La cartella del fornitore è dove verranno installati CakePHP e altre dipendenze
dell'applicazione. Impegnarsi personalmente a non modificare i file in questa cartella.
• La directory webroot è la root del documento pubblico dell'applicazione. Contiene tutti i file
che si desidera siano pubblicamente raggiungibili.

Assicurati che le cartelle tmp e logs esistano e siano scrivibili, altrimenti le prestazioni
della tua applicazione saranno seriamente compromesse. In modalità di debug,
CakePHP ti avviserà, se non è il caso.

All'interno della cartella src


La cartella src di CakePHP è il luogo dove farai la maggior parte dello sviluppo delle tue
applicazioni.

La cartella della console contiene i comandi della console e le attività della console per
l'applicazione. Per ulteriori informazioni, vedi Gusci, Attività e Strumenti console.

La cartella Controller contiene i controller dell'applicazione e i relativi componenti.

La cartella Locale memorizza i file di stringhe per l'internazionalizzazione.

https://riptutorial.com/it/home 3
La cartella del modello contiene le tabelle, le entità e i comportamenti dell'applicazione.

Visualizza : le classi di presentazione vengono posizionate qui: celle, helper e file modello.

Modello : i file di presentazione vengono posizionati qui: elementi, pagine di errore, layout e file
modello di visualizzazione.

Primo progetto vuoto di base

Creazione iniziale e download (CakePHP 3.x)


Il modo più semplice per creare un nuovo progetto CakePHP è tramite Composer (se non conosci
il compositore guarda qui per maggiori informazioni)

Installa compositore

Se è necessario installarlo e si trova su una macchina Windows, seguire questa guida

Se sei su Linux / Unix / OSX segui questa guida

Crea il primo progetto CakePHP

Apri una finestra della console e vai alla tua installazione di php (su Windows con l'installazione
xampp predefinita questa è C:\xampp\php )

Per creare un progetto vuoto, eseguire il seguente comando:

php composer.phar create-project --prefer-dist cakephp/app name_of_your_project

Cottura / Model / View / Controller

La magia di CakePHP è la cottura: una generazione automatica di controller, modello e codice di


visualizzazione con opzioni CRUD di base.

Prima della cottura è necessario configurare la connessione del database. Per fare ciò è
necessario modificare il file config/app.php nel progetto.

'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'my_app', //in basic xampp: root
'password' => 'sekret', //in basic xampp: ''
'database' => 'my_app', //name of the database you want to connect to your project
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
]

https://riptutorial.com/it/home 4
],

Se il tuo database è collegato correttamente, inserisci bin/cake bake nella cartella root del tuo
progetto in una finestra della console.

Questo dovrebbe produrre qualcosa come questo:

Welcome to CakePHP v3.1.6 Console


---------------------------------------------------------------
App : src
Path: /var/www/cakephp.dev/src/
PHP: 5.5.8
---------------------------------------------------------------
The following commands can be used to generate skeleton code for your application.

Available bake commands:

- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- mailer
- migration
- migration_snapshot
- model
- plugin
- shell
- shell-helper
- template
- test

By using `cake bake [name]` you can invoke a specific bake task.

Per semplicità utilizzeremo tutto con le impostazioni predefinite. Per fare questo si entra

cake bake all

Ciò produrrà qualcosa seguendo queste linee:

Welcome to CakePHP v3.2.11 Console


---------------------------------------------------------------
App : src
Path: C:\xampp\htdocs\tipping\src\
PHP : 5.6.15
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Possible model names based on your database:
- users
- blogs
Run `cake bake all [name]` to generate skeleton files.

https://riptutorial.com/it/home 5
Eseguendo il cake bake all <modelNameYouWantToBake> il modello, la tabella, il controller,
l'apparecchiatura e i file di visualizzazione. Esegui questo per ogni possibile nome di modello e hai
un progetto funzionante con opzioni CRUD di base.

Ora puoi aprire il tuo browser e vedere come appare e iniziare ad estendere il progetto secondo la
tua logica

Requisiti

1-HTTP Server. For example: Apache. Having mod_rewrite is preferred, but by no means required.
2-PHP 5.5.9 or greater (including PHP 7)
3-mbstring PHP extens ion
4-intl PHP extension

Di solito faccio un'installazione di apache e mysql su una linuxbox. Posso anche usare Windows,
ma non lo consiglio;) Quindi, di solito faccio una nuova entrata nel file / etc / hosts per rendere un
sitename disponibile a cakephp.

127.0.0.1 localhost caketest.local

prossimo passaggio per copiare tutti i file cakephp in una sottodirectory all'interno di / home /
myusername / public_html / caketest

app
cake
index.php
plugins
README
vendors
.htaccess

poi ho impostato il sito per l'apache (non necessario),

<VirtualHost *: 80> DocumentRoot "/ home / myusername / public_html / caketest" ServerName


caketest.local
# Questo dovrebbe essere omesso nello sviluppo SetEnv APPLICATION_ENV dell'ambiente di
produzione

<Directory "/home/myusername/public_html/caketest">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

riavviare apache. è inoltre necessario modificare i file .htaccess e posizionare una direttiva
RewriteBase con hte path nella directory effettiva, ad es.

RewriteBase /~myusername/caketest

https://riptutorial.com/it/home 6
creare un database, impostare la connessione db nei file di configurazione della torta e basta. puoi
puntare il tuo browser su http: //caketest.local se non vuoi che un url del sito di test tu possa
saltare gli host, e apache creazione di vhost, ma l'url da usare dovrebbe essere http: / localhost / ~
nomeutente / caketest

un'altra cosa importante è abilitare userdir modul in apache, e anche controllare se l'uso di php è
abilitato anche in userdirs.

CakePHP 2.x Introduzione di base

Parlerà della struttura delle directory di CakePHP, cosa significa ogni cartella.

CakePHP ha alcune cartelle principali


1. app - Contiene il nostro codice sorgente dell'applicazione, tutto il nostro codice si trova in
questa directory.
2. lib - Questo è il liberatore del nucleo di cakephp, contiene tutto il codice della libreria di
cakephp di base. La modifica del codice all'interno di questa directory non è suggerita in
quanto possono causare errori durante l'aggiornamento della libreria cakephp.
3. plugin - Questo contiene il codice dei plugin cakephp che verrà utilizzato per la nostra
applicazione.
4. venditori - Questo contiene codice esterno, questo codice non utilizzerà la libreria cakephp.
5. index.php: questo è il file indice.

Possiamo avere più applicazioni ospitate all'interno di un singolo progetto. cioè


possono usare le stesse cartelle lib, plugin e venditori.

Per modificare il codice lib, è consigliabile estenderli nella nostra cartella app ed
eseguire le modifiche.

La cartella dei plugin e dei fornitori è condivisa da tutte le applicazioni ospitate nella
stessa directory.

index.php è il file che viene chiamato prima.

https://riptutorial.com/it/home 7
Ora dovremmo passare alla nostra cartella dell'app
Leggi Iniziare con cakephp online: https://riptutorial.com/it/cakephp/topic/958/iniziare-con-cakephp

https://riptutorial.com/it/home 8
Capitolo 2: Gestione delle richieste Ajax
Examples
Esempio CakePHP 2.x di base

Controller: nel controller è necessario aggiungere il componente RequestHandler. Questo abilita


CakePHP a rilevare automaticamente le richieste Ajax (vedi: http://book.cakephp.org/2.0/en/core-
libraries/components/request-handling.html per maggiori informazioni):

class YourController extends AppController {


public $components = array('RequestHandler');
//...

public function ajaxCall() {


if($this->request->is('ajax'){
// some code that should be executed
// ...
// variables you want to return
$this->set(compact('firstVariable', 'secondVariable'));
$this->set('_serialize', array('firstVariable', secondVariable))
}
}

Visualizza codice (usando jQuery):

<script>
$.ajax({
type: 'POST',
url: '/yourController/ajaxCall',
success: function (result) {
// result is a JSON array of the returned Variables
},
error: function (result){
console.log(result);
}
});
</script>

Richiesta Ajax in Cakephp 2.x

Un altro modo di usare ajax in cakephp. Cakephp si fornisce per una richiesta giusta. Si prega di
vedere l'esempio.

$data = $this->Js->get('#id')->serializeForm(array('isForm' => true, 'inline' => true));


//on click send request to controller and displays response data in view
$this->Js->get('#button-id')->event(
'click', $this->Js->request(
array('controller' => 'Users', 'action' => 'add'), array(
'update' => '#time', // field you wish to update
'data' => $data, // Form Data in serialize form
'async' => true,

https://riptutorial.com/it/home 9
'dataExpression'=>true,
'method' => 'POST' // method get or post
)
)
);

Leggi Gestione delle richieste Ajax online: https://riptutorial.com/it/cakephp/topic/6230/gestione-


delle-richieste-ajax

https://riptutorial.com/it/home 10
Capitolo 3: Istanziazione di modelli da
un'altra origine dati
Osservazioni
Arriverà un momento in cui la tua applicazione CakePHP avrà bisogno di interrogare più di un
database. Il metodo per richiedere i modelli da database non predefiniti non è presente nella
documentazione ufficiale.

Examples
Instantiating usa App :: uses

App::uses('YourModel', 'Model');
$model_1 = new YourModel(array('ds' => 'default'));
$model_2 = new YourModel(array('ds' => 'database2'));

Modifiche al database al volo per modali

Per più database, hai il file database.php in cui puoi impostare tutti i database che ti servono.

Se si desidera "cambiare" un database per un modello specifico al volo, utilizzare il metodo


setDataSource () .

Ad esempio, se si dispone di due database, è possibile definirli nel file database.php come
"predefinito" e "sandbox", ad esempio.

Quindi, nel tuo codice:

$ This-> MyModal-> setDataSource ( 'sandbox');

La sandbox è il nome della configurazione e il nome effettivo del database viene scritto una sola
volta nel file database.php.

Leggi Istanziazione di modelli da un'altra origine dati online:


https://riptutorial.com/it/cakephp/topic/1953/istanziazione-di-modelli-da-un-altra-origine-dati

https://riptutorial.com/it/home 11
Capitolo 4: Suggerimenti per la codifica di
CakePHP3
Examples
Creazione di un nuovo controller

namespace App\Controller;

class PostsController extends AppController {

public function initialize(){


parent::initialize();
// code that you want to run before every action
}
public function view($id) {
//Your code here
}
}

Aggiungi il metodo beforeFilter () in Controller

Il metodo beforeFilter () viene eseguito prima dell'esecuzione di qualsiasi altro metodo nel
controller.

Prima usa lo spazio dei nomi Event prima di definire la classe nel tuo file controller.

use Cake\Event\Event;

Nel controller, aggiungere il metodo beforeFilter () come mostrato di seguito.

public function beforeFilter(Event $event) {


parent::beforeFilter($event);
}

Oppure, puoi usare il metodo initialize() .

public function initialize(){


parent::initialize();
}

Passare le variabili alla vista

Passa ogni variabile da visualizzare alla volta

$this->set('color', 'pink');
$this->set('color', $color);

https://riptutorial.com/it/home 12
Passare più variabili per visualizzare insieme tramite la funzione compact ()

$color1 = 'pink';
$color2 = 'red';
$this->set(compact('color1', 'color2'));

Recupero dei dati dei post equivalenti a $ _POST

È possibile recuperare i dati del post come matrice.

$post_data= $this->request->data;

È possibile recuperare i dati dei post per una chiave particolare.

$this->request->data['field'];

Recupera un valore chiave specifico

$this->request->data('key_name');

Recupera il valore chiave specifico dell'array nidificato

$this->request->data('data.subfield');

la differenza tra la notazione dell'array e il metodo data() è che data() è sicura da errori e
restituisce null se la chiave non esiste nell'array

così intenti di fare

if(isset($this->request->data['field']) && $this->request->data['field']) { ...}

tu puoi fare

if($this->request->data('field')) { ...}

per CakePHP 3.4.x +

ottieni tutti i dati:

$this->request->getData();

ottieni la chiave specifica:

$this->request->getData('key');

per impostare i dati disponibili per la funzione getData devi fare qualcosa del tipo:

https://riptutorial.com/it/home 13
$this->request = $this->request->withData('some_key_on_the_fly', 'value');
$some_key_on_the_fly = $this->request->getData('some_key_on_the_fly');

utile per l'aggiornamento dei modelli nel controller con dati statici

Carica un altro modello nel controller

Di default CakePHP carica il modello correlato nel controller. Per caricare un altro modello nel
controller, utilizzare il metodo loadModel ():

$this->loadModel('Articles');

o caricare al volo

$table = TableRegistry::get('Articles');
$table->find();

Reindirizzamento a un'altra pagina dal Controller

Reindirizzare all'interno dell'applicazione (un'altra azione di un controller specifico).

return $this->redirect([
'controller' => 'myController',
'action' => 'myAction'
]);

Reindirizza alla pagina dei referrer

return $this->redirect($this->referer());

Reindirizzare all'esterno dell'applicazione o URL specifico

return $this->redirect("http://stackoverflow.com/users/1793428/haresh-vidja");

Passaggio da variabile a azione dall'URL con reindirizzamento

Passare la variabile in URL come parametro di un metodo

return $this->redirect([
'controller' => 'users',
'action' => 'profile',
$id
]);

L'URL dovrebbe essere simile a questo http: // tuo_app_url / utenti / profilo / {id}

nel file UsersController.php nel metodo profile ()

https://riptutorial.com/it/home 14
class UsersController extends Controller {
public function profile($id=null) {
$userData=$this->Users->get($id);
}
}

Passare la variabile in URL come stringa di query

return $this->redirect([
'controller' => 'users',
'action' => 'profile',
'?'=>['id'=>$id]
]);

L'URL dovrebbe essere simile a questo http: // your_app_url / users / profile /? Id = {id}

nel file UsersController.php nel metodo profile ()

class UsersController extends Controller {


public function profile() {
$userData=$this->Users->get($this->request->query('id'));
}
}

Imposta o modifica il layout dell'applicazione

Imposta il layout predefinito per l'intera applicazione . cioè, creato il file di layout in
/src/Template/Layout/admin.ctp

class AppsController extends Controller {

public function beforeFilter(Event $event) {


parent::beforeFilter($event);
$this->viewBuilder()->layout('admin'); // For Version >= 3.1 or
$this->layout = 'admin'; // for version < 3.1

// your other code should be here


}
}

Imposta il layout predefinito per un'azione specifica nell'applicazione . cioè, l'applicazione ha


un layout diverso nella pagina di accesso in /src/Template/Layout/login.ctp

class UsersController extends Controller {

public function login() {

$this->viewBuilder()->layout('login'); // For Version >= 3.1 or


$this->layout = 'login'; // for version < 3.1

//your other code should be here


}
}

https://riptutorial.com/it/home 15
Cambia layout per controller specifico . per esempio, hai bisogno di un layout diverso per tutti i
metodi del controller specifico

class UsersController estende il controller {

public function beforeFilter(Event $event) {


parent::beforeFilter($event);

$this->viewBuilder()->layout('user_layout'); // For Version >= 3.1 or


$this->layout = 'user_layout'; // for version < 3.1

//your other code should be here


}
}

Imposta il layout della richiesta Ajax

Generalmente nella richiesta AJAX non è necessario caricare CSS, JS. Anche omettendo altro
codice HTML.

Crea un file ajax.ctp in / src / Template / Layout e il codice dovrebbe essere

<?php
$this->fetch('content');

Imposta il layout basato su AJAX per l'intera applicazione, in AppsController.php

la classe AppsController estende il controller {

public function beforeFilter(Event $event) {


parent::beforeFilter($event);
if($this->request->isAjax())
{
$this->viewBuilder()->layout('ajax'); // For Version >= 3.1 or
$this->layout = 'ajax'; // for version < 3.1

}
else
{
$this->viewBuilder()->layout('admin'); // For Version >= 3.1 or
$this->layout = 'admin'; // for version < 3.1
}

// your other code should be here


}

Carica componenti in CakePHP

Possiamo caricare i componenti in due modi.

1. Inizializza o sovrascrive la proprietà $ components in Controller

https://riptutorial.com/it/home 16
2. Usando il metodo loadComponent () nel metodo initialize () di Controller.

Way-1 Dovrebbe essere l'override del componente di caricamento da parte di AppsController.php


caricare uno o più componenti

class UsersController extends AppController {


public $components = ['RequestHandler','Auth','Flash'];
}

Way-2 Utilizzare in questo modo quando è necessario caricare il componente in modo dinamico
per controller specifici. Carica un componente

class UsersController extends AppController {


public function initialize() {
parent::initialize();
$this->loadComponent("RequestHandler"); // load specific component
$this->loadComponent(["RequestHandler","Auth","Flash"]); // load specific component
}
}

Cos'è il metodo initilaize ()?

initialize () è stato introdotto in CakePHP versione> 3.0

Come una struttura di codice, sembra uguale al metodo beforeFilter (). ma ci sono molte
differenze tra beforeFilter () e initialize ().

1. initialize () viene sempre chiamato dopo la chiamata del costruttore. ma beforeFilter () non
sta chiamando in caso di metodo di azione non trovato in particolare controller.
2. Il metodo initialize () viene generalmente utilizzato per inizializzare qualcosa come
aggiungere nuovi componenti e helper. ma in beforeFilter () viene generalmente utilizzato
per eseguire parte logica globale.

Dati della stringa di query Retrive equivalenti a $ _GET

È possibile recuperare i dati della stringa di query come matrice.

$post_data= $this->request->query;

È possibile recuperare i dati dei post per una chiave particolare.

$this->request->query['field'];

Recupera un valore chiave specifico

$this->request->query('key_name');

Recupera il valore chiave specifico dell'array nidificato

https://riptutorial.com/it/home 17
$this->request->query('data.subfield');

Creazione della classe Tabella (modello)

Come creare la classe del modello utente

namespace App\Model\Table;
use Cake\ORM\Table;

class UsersTable extends Table {


public function initialize(array $config) {
$this->table('users'); //define table name
$this->displayField('username'); // unique or other special field of users table
$this->primaryKey('id'); // primary key of users table
$this->tablePrefix('prefix_'); // if prefix set tablename should be prefix_users

// your other code here


}

// your other methods here


}

Associazioni di modelli in CakePHP

Esistono 4 tipi di associazioni (relazioni) che possiamo definire in CakePHP

class PostsTable extends Table {


public function initialize(array $config) {

// table initialization code should be here

$this->belongsTo('Authors', [
'className' => 'Authors',
'foreignKey' => 'author_id',
'joinType' => 'INNER',
]);
$this->hasMany('Tags');
$this->hasOne('Categories');
$this->hasAndBelongsToMany('Topics');
}
}

Nell'esempio sopra, puoi vedere 4 tipi di relazioni

Il post appartiene all'autore (One to One) , significa che nella tabella dei posts è presente una
chiave straniera author_id che è associata alla tabella id of authors .

Messaggio ha molte Tag (uno a molti), significa in tags tabella ha una chiave esterna post_id che
è associato con id di posts tavola.

Il post ha un tag (molti a uno o uno a uno) , significa che nella tabella dei posts è presente una
chiave straniera category_id che è associata id della tabella delle categories .

Post ha e appartiene a Topics (Many to Many) , questa è una relazione molte a molte tra posts e

https://riptutorial.com/it/home 18
topics table. per mantenere molti a molti relazione deve essere necessario creare la terza tabella,
tabella, il nome della tabella dovrebbe essere posts_categories . Campi di questa tabella come
indicato di seguito

1. id (chiave primaria della tabella)


2. post_id (tabella chiave esterna dei posts )
3. topic_id (tabella chiave esterna della tabella degli topics )

Leggi Suggerimenti per la codifica di CakePHP3 online:


https://riptutorial.com/it/cakephp/topic/3341/suggerimenti-per-la-codifica-di-cakephp3

https://riptutorial.com/it/home 19
Titoli di coda
S.
Capitoli Contributors
No

burzum, Community, Deejay, gins t, Gorakh Yadav, Max90,


1 Iniziare con cakephp
mcgowan.b

Gestione delle
2 Max90, Rashid Khan
richieste Ajax

Istanziazione di
3 modelli da un'altra Holt, RavatSinh Sisodiya, Zetaphor
origine dati

Suggerimenti per la
arilia, CodeZilla, Haresh Vidja, IWillScoop, Max90, Miheretab
4 codifica di
Alemu, parsaya
CakePHP3

https://riptutorial.com/it/home 20

Potrebbero piacerti anche