activeRecord метод delete()

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
b10s
Сообщения: 72
Зарегистрирован: 2013.02.02, 18:22
Откуда: Краснодар-Сочи-Тимашевск
Контактная информация:

activeRecord метод delete()

Сообщение b10s »

Здравствуйте,

имею метод

Код: Выделить всё

    public function actionDelSliderPic($id=-1) {
        //todo: add filters
        $sliderPicId = $id;
        $dealForm = Yii::app()->request->getPost('dealForm');
        $dealId = $dealForm[id];

        if($sliderPic = SliderPic::model()->find( 'deal_id= :deal_id and pic_id = :pic_id', array(':deal_id'=>$dealId, ':pic_id'=>$sliderPicId) ) ) {
            $sliderPic->delete();
            unlink(Yii::getPathOfAlias('webroot').'/images/deals/'.$dealId.'/'.$sliderPicId.'.jpg');
        } elseif($sliderPicId == 999 ) {
            if( $sliderPics = SliderPic::model()->findAll('deal_id = :deal_id', array(':deal_id' => $dealId )) )
                foreach($sliderPics as $sliderPic) {
                    unlink(Yii::getPathOfAlias('webroot').'/images/deals/'.$dealId.'/'.$sliderPic->pic_id.'.jpg');
                    $sliderPic->delete();
                }
        } 
где при выполнении последней строчки, когда я пытаюсь удалить все картинки

Код: Выделить всё

unlink(Yii::getPathOfAlias('webroot').'/images/deals/'.$dealId.'/'.$sliderPic->pic_id.'.jpg');
$sliderPic->delete(); 
получаю ошибку
Column name must be either a string or an array
в чем может быть дело?

Аватара пользователя
b10s
Сообщения: 72
Зарегистрирован: 2013.02.02, 18:22
Откуда: Краснодар-Сочи-Тимашевск
Контактная информация:

Re: activeRecord метод delete()

Сообщение b10s »

Проблема решена. Оказывается, для корректной работы метода delete() необходим primary key в таблице.

Viloborod
Сообщения: 4
Зарегистрирован: 2017.01.27, 08:46

Re: activeRecord метод delete()

Сообщение Viloborod »

Что делать, если я работаю с представлением и primary key по этой причине нет?

Аватара пользователя
Alexum
Сообщения: 681
Зарегистрирован: 2016.09.26, 10:00

Re: activeRecord метод delete()

Сообщение Alexum »

Представление? Откуда модель может знать какие данные из исходных таблиц нужно удалить? :? На ум приходит только переопределение delete() в модели, где потребуется реализовать логику удаления данных из исходных таблиц.

Viloborod
Сообщения: 4
Зарегистрирован: 2017.01.27, 08:46

Re: activeRecord метод delete()

Сообщение Viloborod »

Переопределил функцию и всех дел

public static function primaryKey()
{
return ['primary_key'];
}

Ответить