所以,我有一个具有以下关系的项目:
In Listing.php
public $belongsTo = array(
'User' => array(
'foreignKey' => 'user_id'));
In User.php
public $hasMany = array(
'Referral' => array(
'foreignKey' => 'user_id',
'dependent' => true),
'Listing' => array(
'foreignKey' => 'user_id',
'dependent' => true),
'Appointment' => array(
'foreignKey' => 'user_id',
'dependent' => true
));
基本上,当我创建一个新的列表时,我还想创建一个推荐和约会。我一直在命名我的表单字段:
name="data[User][Referral][name]", and I also tried name="data[Referral][name]"
然后尝试使用:
if ($this->request->data['User']['Referral']) {
$this->request->data['User']['id'] = $this->Auth->user('id');
}
$this->request->data['Listing']['user_id'] = $this->Auth->user('id');
debug($this->request->data);
if($this->Listing->SaveAssociated($this->request->data, array('deep' => true))) {
对于以前的字段命名约定,一切都失败了,我的输出如下:
编辑:由于验证错误,所有内容都失败了。成功后,我得到与后一个命名约定相同的结果 - 创建字段(其中N个,其中N是模型中传递的字段数,即2个用于约会,4个用于引用),所有值均为空白
array(
'Listing' => array(
'sale_type' => '',
'property_type' => '',
'referer' => '',
'price' => '',
'access_method' => '',
'bedrooms' => '',
'bathrooms' => '',
'ext_stories' => '',
'levels' => '',
'sq_feet' => '',
'sq_feet_src' => '',
'builder' => '',
'year_built' => '',
'guest_sq_feet' => '',
'user_id' => '2'
),
'User' => array(
'Appointment' => array(
'appointment_date' => '',
'appointment_date2' => ''
),
'Referral' => array(
'name' => 'katie',
'contact' => '',
'relationship' => ''
),
'id' => '2'
)
我可以说这不是完全在书中格式化数据的方式,但是我无法弄清楚如何命名这些字段来实现它。
如果我使用后一种命名约定,我将其作为输出:
array(
'Listing' => array(
'sale_type' => '',
'property_type' => '',
'referer' => '',
'price' => '',
'access_method' => '',
'bedrooms' => '',
'bathrooms' => '',
'ext_stories' => '',
'levels' => '',
'sq_feet' => '',
'sq_feet_src' => '',
'builder' => '',
'year_built' => '',
'guest_sq_feet' => '',
'user_id' => '2'
),
'Appointment' => array(
'appointment_date' => '',
'appointment_date2' => ''
),
'Referral' => array(
'name' => 'katie',
'contact' => '',
'relationship' => '',
'user_id' => '2'
)
这至少会保存,但我最终会得到4个推荐记录(每个提供的数据行一个),其名称,联系人和关系都是NULL。
这是我第一次使用SaveAssociated deep = true,而且我不确定我做得不对。我假设我应该使用前一种方法(在User下嵌套这些模型),但我不确定如何命名字段以使数据看起来更像提供的示例{{3} }
解决 我是个白痴,终于明白了:
name="data[User][Referral][0][name]"
答案 0 :(得分:1)
我是个白痴,终于明白了:
name="data[User][Referral][0][name]"