Cakephp Saveassociated Deep => true数组格式问题

时间:2014-05-02 20:49:18

标签: php arrays cakephp

所以,我有一个具有以下关系的项目:

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]"

1 个答案:

答案 0 :(得分:1)

我是个白痴,终于明白了:

name="data[User][Referral][0][name]"