CakePHP получает связанные данные внутри перед сохранением

Кто-нибудь видит, что я делаю неправильно?

При сохранении $brand['slug'] пуст, поэтому я предполагаю, что что-то идет не так в запросе поиска.

Заранее спасибо.

public function beforeSave() {
    if (isset($this->data['Smartphone']['model'])) {

        $brand = $this->Brand->find('first', array(
            'conditions' => array(
                'Brand.id' => $this->data['Smartphone']['brand_id']
            )
        ));

        $this->data['Smartphone']['slug'] =  $brand['slug'].'-'.Inflector::slug(strtolower($this->data['Smartphone']['model']), '-');
    }
    return true;
}

person Reinier    schedule 20.08.2012    source источник
comment
$slug = $this-›Brand-›field('slug', array('Brand.id' =› $this-›data['Smartphone']['brand_id'] )); сделал бы его даже немного чище   -  person Ceeram    schedule 20.08.2012
comment
Убедитесь, что у вас установлена ​​последняя версия, я не знаю, используете ли вы это в обычном save() или saveAll(), но в ранних версиях 2.x saveAll и модификация в обратном вызове имели некоторые проблемы   -  person Ceeram    schedule 20.08.2012


Ответы (1)


Как это выглядит, я думаю, вам следует использовать $brand['Brand']['slug'] вместо $brand['slug'].

Вы можете попытаться распечатать массив $brand, используя pr($brand); сразу после написанного вами запроса на поиск. И укажите индекс массива соответственно.

person Arun Jain    schedule 20.08.2012