Bonjour à tous, je viens soliciter votre aide sur un projet que je développe sur mes temps libre.
Pour résumé simplement J'ai une base de clients, une base d'unités de stockage et je dois créer des entrées en stockage, je choisi donc un client, je lui attribut une ou plusieurs unités de stockage avec une date d'entrée par unité et une date de sortie pour le jour ou il libère l'espace.
Je suis donc parti sur 3 modèles
Client :
class Client extends AppModel {
public $name = 'Client';
public $hasMany = array('ClientStockage');
}
Stockage :
class Stockage extends AppModel {
public $name = 'Stockage';
public $hasMany = array('ClientStockage');
}
ClientStockage :
class ClientStockage extends AppModel {
public $name = 'ClientStockage';
public $belongsTo = array(
'Client' => array(
'className' => 'Client',
'foreignKey' => 'client_id'
),
'Stockage' => array(
'className' => 'Stockage',
'foreignKey' => 'stockage_id'
)
);
}
Ces modèles sont liés par une relation HasAndBelongsToMany car j'ai besoin de stocker des informations supplémentaires dans la table ClientStockage. Jusque la tout va bien, les données sont bien enregistrées.
Mon problème : j'ai un formulaire d'ajout pour ClientStockage qui propose des selects déja remplis avec les noms des clients, les id des stockages, puis des champs pour les infos supplémentaires, le soucis c'est que je voudrais qu'un stockage ne puisse être attibué qu'une fois à un client (un client peut avoir plusieurs stockage mais un stockage ne peut avoir qu'un client) et cela ne fonctionne pas, je n'arrive pas à remplir mes champs avec seulement les id des stockages encores disponibles.
La fonction dans mon controller ClientStockages :
public function in() {
// On fait passer à la vue les infos pour remplir les input select
$this->set('clients', $this->ClientStockage->Client->find('list', array('fields' => array('Client.nom'))));
$this->set('stockages', $this->ClientStockage->Stockage->find('list', array('fields' => array('Stockage.id'))));
if ($this->request->is('post')) {
if ($this->ClientStockage->saveAssociated($this->request->data)) {
return $this->redirect(array('action' => 'index'));
debug($this->request->data);
}
}
}
Mes relations ne sont pas bonnes mais dans ce cas quelle structure utiliser puisque je veux sauvergarder des infos supplémentaires dans l'association Client-Stockage, tel que date d'entrée, de sortie....
Sinon je pensais rajouter un champ location dans ma table Stockage qui serait sur 0 et qui passerait à 1 si la caisse est attribuée à un client, mais je n'arrive pas à gérer cet enregistrement depuis mon controller ClientStockages
J'espère que je suis clair et merci d'avance de l'aide que vous pourrez m'apporter.