Сделать Insert where

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Сделать Insert where

Сообщение Bezlepkin » 2015.08.06, 15:38

Привет! Подскажите, не могу сообразить. Нужно сделать unsert в таблицу user_profiles.
Я так понимаю insert используют для новых записей, для обновления update, но что если пользователя еще нет в таблице.

Аватара пользователя
vitalik1183
Сообщения: 1673
Зарегистрирован: 2014.07.01, 08:42

Re: Сделать Insert where

Сообщение vitalik1183 » 2015.08.06, 15:40

ну значит нужно создать предварительно юзера.
Yii2!

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: Сделать Insert where

Сообщение lynicidn » 2015.08.06, 17:56

replace into

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: Сделать Insert where

Сообщение lynicidn » 2015.08.06, 17:56

или update on duplicate

Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Сделать Insert where

Сообщение Bezlepkin » 2015.08.06, 18:09

Дамп

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

modules\user\models\User Object
(
    [authKey] => 
    [profile] => 
    [_attributes:yii\db\BaseActiveRecord:private] => Array
        (
            [id] => 82
            [service_id] => ...
            [service_url] => ...
            [service] => ...
            [hash_id] => u55c35ab4a61ab
            [first_name] => Igor
            [last_name] => Bezlepkin
            [email] => ...
            [password_hash] => 
            [password_reset_token] => 
            [auth_key] => 
            [created_at] => 1438866100
            [updated_at] => 1438866100
            [access] => 0
            [login] => 0
            [role] => user
            [status] => 1
            [registration_ip] => ...
            [data] => 
            [activation_token] => 
            [activated] => 1
        )

    [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
        (
            [id] => 82
            [service_id] => ...
            [service_url] => ...
            [service] => ...
            [hash_id] => u55c35ab4a61ab
            [first_name] => Igor
            [last_name] => Bezlepkin
            [email] => ...
            [password_hash] => 
            [password_reset_token] => 
            [auth_key] => 
            [created_at] => 1438866100
            [updated_at] => 1438866100
            [access] => 0
            [login] => 0
            [role] => user
            [status] => 1
            [registration_ip] => ...
            [data] => 
            [activation_token] => 
            [activated] => 1
        )

    [_related:yii\db\BaseActiveRecord:private] => Array
        (
            [profile] => modules\user\models\Profile Object
                (
                    [_attributes:yii\db\BaseActiveRecord:private] => Array
                        (
                            [user_id] => 82
                            [firstname] => 1232
                            [lastname] => ????
                            [uimage] => ??????
                            [about] => 
                        )

                    [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
                        (
                            [user_id] => 82
                            [firstname] => 1232
                            [lastname] => ????
                            [uimage] => ??????
                            [about] => 
                        )

                    [_related:yii\db\BaseActiveRecord:private] => Array
                        (
                        )

                    [_errors:yii\base\Model:private] => 
                    [_validators:yii\base\Model:private] => 
                    [_scenario:yii\base\Model:private] => default
                    [_events:yii\base\Component:private] => Array
                        (
                        )

                    [_behaviors:yii\base\Component:private] => Array
                        (
                        )

                )

        )

    [_errors:yii\base\Model:private] => 
    [_validators:yii\base\Model:private] => 
    [_scenario:yii\base\Model:private] => default
    [_events:yii\base\Component:private] => Array
        (
            [beforeInsert] => Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [0] => yii\behaviors\TimestampBehavior Object
                                        (
                                            [createdAtAttribute] => created_at
                                            [updatedAtAttribute] => updated_at
                                            [value] => 
                                            [attributes] => Array
                                                (
                                                    [beforeInsert] => Array
                                                        (
                                                            [0] => created_at
                                                            [1] => updated_at
                                                        )

                                                    [beforeUpdate] => updated_at
                                                )

                                            [owner] => modules\user\models\User Object
 *RECURSION*
                                        )

                                    [1] => evaluateAttributes
                                )

                            [1] => 
                        )

                )

            [beforeUpdate] => Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [0] => yii\behaviors\TimestampBehavior Object
                                        (
                                            [createdAtAttribute] => created_at
                                            [updatedAtAttribute] => updated_at
                                            [value] => 
                                            [attributes] => Array
                                                (
                                                    [beforeInsert] => Array
                                                        (
                                                            [0] => created_at
                                                            [1] => updated_at
                                                        )

                                                    [beforeUpdate] => updated_at
                                                )

                                            [owner] => modules\user\models\User Object
 *RECURSION*
                                        )

                                    [1] => evaluateAttributes
                                )

                            [1] => 
                        )

                )

        )

    [_behaviors:yii\base\Component:private] => Array
        (
            [0] => yii\behaviors\TimestampBehavior Object
                (
                    [createdAtAttribute] => created_at
                    [updatedAtAttribute] => updated_at
                    [value] => 
                    [attributes] => Array
                        (
                            [beforeInsert] => Array
                                (
                                    [0] => created_at
                                    [1] => updated_at
                                )

                            [beforeUpdate] => updated_at
                        )

                    [owner] => modules\user\models\User Object
 *RECURSION*
                )

        )

)
 

igorjob
Сообщения: 1
Зарегистрирован: 2018.05.24, 13:41

Re: Сделать Insert where

Сообщение igorjob » 2018.05.24, 13:43

в index.php выключи php warnings, и все будет гуд

mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Сделать Insert where

Сообщение mkramer » 2018.05.25, 20:49

igorjob писал(а):
2018.05.24, 13:43
в index.php выключи php warnings, и все будет гуд
Странный совет. Если код даёт php warning, значит что-то в нём уже не гуд

lgXenos
Сообщения: 241
Зарегистрирован: 2015.11.30, 15:42

Re: Сделать Insert where

Сообщение lgXenos » 2018.05.28, 10:55

Bezlepkin писал(а):
2015.08.06, 15:38
Привет! Подскажите, не могу сообразить. Нужно сделать unsert в таблицу user_profiles.
Я так понимаю insert используют для новых записей, для обновления update, но что если пользователя еще нет в таблице.
Значит делаешь select, который возвращает false, и в том случае делаешь insert.
Это наиболее бескостыльный вариант. Т.к. нативного update on duplicate - в yii нет (по причине что субд-зависимая вещь)

mkramer писал(а):
2018.05.25, 20:49
Странный совет. Если код даёт php warning, значит что-то в нём уже не гуд
Его первое сообщение. Хотел показаться умным
:)

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Сделать Insert where

Сообщение rugabarbo » 2018.05.28, 13:14

lgXenos писал(а):
2018.05.28, 10:55
Т.к. нативного update on duplicate - в yii нет (по причине что субд-зависимая вещь)
Есть: https://www.yiiframework.com/doc/api/2. ... t()-detail

Ответить