Привет, я новичок в cakephp и делаю проект на cakephp 2.3.4.
Мне нужно связать класс металла продукта через множество связей. Но, похоже, это не работает.Не удается сохранить связанные данные с hasMany through (Join Model)
код модели
class Metal extends AppModel {
public $hasMany = array(
'MetalProduct'
);
}
class Product extends AppModel {
public $hasMany = array(
'MetalProduct'
);
}
App::uses('AppModel', 'Model');
class MetalProduct extends AppModel {
public $belongsTo = array(
'Metal' => array(
'className' => 'Metal',
'foreignKey' => 'metal_id'
),
'Product' => array(
'className' => 'Product',
'foreignKey' => 'product_id'
)
);}
Мои имена таблиц баз данных металла, продукты и metal_products
У меня есть несколько выбора опции для выбора более одного типа металла.
Это, как я получаю список металлов
$metals=$this->Metal->find('list');
$this->set(compact('metals'));
FormHelper код для ListBox является
<?php echo $this->Form->input('Metal',array('type' => 'select',
'multiple' => true)); ?>
Продукт становится успешно сохранен, но ассоциации не являются.
Массив отладки дать мне этот
$message = array(
'Product' => array(
'category_id' => '517a514b-0eb0-4ec9-b018-0b948620d4f0',
'name' => 'mangalsutra Diamond',
'slug' => 'mangalsutra_diamond',
'description' => '1212',
'Metal' => array(
(int) 0 => '5183cb65-bf90-459c-b22e-0b748620d4f0',
(int) 1 => '5183ce25-c744-433e-b035-0b748620d4f0'
),
'image' => '121212',
'price' => '12121',
'weight' => '12',
'active' => '1',
'category' => 'Mangalsutra'
)
)
я кладу голову сквозь стены, но ни малейшего понятия, почему ассоциации не получают спасение. Как они говорят в учебниках, это кажется легким, но почему он не работает?
У меня есть сомнения, что ее не экономить, так как металлический массив передается как этот
'Metal' => array(
(int) 0 => '5183cb65-bf90-459c-b22e-0b748620d4f0',
(int) 1 => '5183ce25-c744-433e-b035-0b748620d4f0'
),
Следует отметить «id''rather чем (INT) 0 или что-то.
Кроме того, моя таблица базы данных для metal_products, которую я создал вручную имеет
id(primary key)
metal_id(foreign key to Metal.id)
product_id(foreign key to Product.id)
Я делаю что-то неправильно с именования или базы данных, каким образом будут созданы? Пожалуйста, дай мне правильный ансу вызвать все, что я пытался от других отвечать не работает
Я спасаю его через
$this->Product->saveAll($this->request->data, array('deep' => true))
Вы хотите сказать 2.3.4? CakePHP 2.4 даже не бета/RC еще – fullybaked
извините, мой плохой 2.3.4 это я исправлю его –
Есть ли какая-то особая причина, по которой вы используете hasMany-belongsTo-hasMany, а не HABTM? – Nunser