Ben CakePHP 2.6.7 kullanıyorum.CakePHP 2.6.7 hasMany Veri kaydedilmedi
Bir kullanıcı profiline birden çok araba ve birden çok adres ekleyebilecek. Aynı zamanda birden fazla adresi tek bir araca bağlayabilir ve bir adresi birden fazla araca bağlayabilir.
Sonra bir kullanıcı modeli vardır:
class User extends AppModel {
public $hasMany = array(
'Car',
'Address'
);
}
sahip bir araba modeli:
class Car extends AppModel {
public $belongsTo = array(
'User'
);
public $hasAndBelongsToMany = array(
'Address' =>
array(
'unique' => 'keepExisting'
)
);
}
Bir Bir Adres modeli:
class Address extends AppModel {
public $hasAndBelongsToMany = array(
'Car' =>
array(
'unique' => 'keepExisting',
),
);
public $belongsTo = array(
'User'
);
}
O kadar bir form var Kullanıcı araçlarını (sadece şu an için bir tane) düzenleyebilir:
[...]
<legend>Mes voitures</legend>
<?php
for($nbrvoiture = 0; $nbrvoiture <= 0; $nbrvoiture++)
{
?><h3>Voiture <?php echo $nbrvoiture+1?></h3><?php
$myLabelOptions = array('text' => "Marque");
echo $this->Form->input('Car.'.$nbrvoiture.'.CarMake', array('label' => array_merge($mainLabelOptions, $myLabelOptions)));
$myLabelOptions = array('text' => "Modèle");
echo $this->Form->input('Car.'.$nbrvoiture.'.CarModel', array('label' => array_merge($mainLabelOptions, $myLabelOptions)));
$myLabelOptions = array('text' => "Plaque d'immatriculation");
echo $this->Form->input('Car.'.$nbrvoiture.'.NumberPlate', array('label' => array_merge($mainLabelOptions, $myLabelOptions)));
echo $this->Form->submit("Valider", array(
'class' => 'btn btn-default col-sm-offset-2'
));
}
şey benim veritabanına verileri kaydetmek olamaz olmasıdır. Ben verileri kaydetmek zaman
function edit() {
// On récupère l'ID de l'utilisateur
$user_id = $this->Auth->user('id');
// Si l'utilisateur n'a pas d'ID => il n'est pas connecté => il ne peut pas éditer son profil
if(!$user_id){
$this->redirect('/');
die();
}
debug($this->User->find('all'));
$this->User->id = $user_id;
$passError = false;
if($this->request->is('put') || $this->request->is('post')){
$d = $this->request->data;
$d['User']['id'] = $user_id;
debug($d);
if($this->request['pass'][0]=='cars')
{
if($this->User->saveAssociated($d, array('deep' => true))){
$this->Session->setFlash(__("Les informations sur la voiture ont bien été modifiées"), 'alert', array (
'plugin' => 'BoostCake',
'class' => 'alert-success'
));
}else{
$this->Session->setFlash(__("Impossible de modifier ou d'ajouter les infos"), 'alert', array (
'plugin' => 'BoostCake',
'class' => 'alert-danger'
));
}
}
, bu hata gösterir: İşte Kullanıcı kontrolör kod parçasıdır.
array(
'Car' => array(
(int) 0 => array(
'CarMake' => 'Allard',
'CarModel' => '2005',
'NumberPlate' => '56QDS1'
)
),
'User' => array(
'id' => '1'
)
)
I do not:
Users(id, username, mail, password, created, lastlogin, active, firstname, lastname, gender, birthdate, phonenumber)
Cars(id, CarMake, CarModel, NumberPlate, user_id)
Addresses(id, address, city, state, postcode, country, user_id)
Addresses_cars(address_id, car_id)
Bu benim ($ d değişken) formundan alabilirsiniz ne bir örnek: Benim veritabanında
Bunları 4 tablolar neden işe yaramadığını anlayın ... Bana yardım edebilir misiniz?
Teşekkür ederiz! :)
DÜZENLEME: Ayrıca SaveAll ile denedim ama işe yaramaya çalışmıyorum .. sorun ne?
"hatayı gösterir", ancak sonra hatayı listelemezsiniz. Ne hatayı alıyorsun? – Dave
Hata durumunda göstermeyi seçtiğim hatayı gösterdi ($ this-> Session-> setFlash (__ ("Impossible de modifier ou d'ajouter les infos")) Her neyse, problem çözüldü. bununla çelişen başka bir form için –
Bu bir hata değil - bu bir mesajdır.İleri sorularınız için, açıklamanızda doğru olduğundan emin olun ve gerçek hata/mesajı ekleyin, böylece insanların zamanını harcamak için zaman kaybetmeyiniz. – Dave