Присвоение id пользователя в связанной таблице

Есть две таблицы: users и posts. Связь через id пользователя и userId поста.Связь один ко многим. У одного пользователя много постов. Как через форму в yii2(или может быть как-то ещё) сделать так,чтобы при создании поста в админке автоматически присваивался id пользователя,который его создаёт?


Ответы (2 шт):

Автор решения: fedornabilkin

Чтоб прям совсем на автомате, то надо добавить в таблицу posts два поля created_by и updated_by, а в классе модели добавить бихевиор, как ниже. Также не забыть указать эти поля в рулсах у модели

use yii\behaviors\BlameableBehavior;

public function behaviors()
{
    return [
        BlameableBehavior::class,
    ];
}

В методе rules()

[['created_by'], 'safe'],

Если уже есть поля для определения автора и последнего, кто изменял запись, то их можно указать в свойствах бихевиора.

return [
    [
        'class' => BlameableBehavior::class,
        'createdByAttribute' => 'user_id',
        'updatedByAttribute' => 'updater_id',
    ],
];
→ Ссылка
Автор решения: Михаил Динов

Аня, можешь как fedornabilkin через поведение сделать, либо в модели можешь метод переопределить:

    /**
     * @inheritDoc
     */
    public function beforeSave($insert): bool
    {
        if ($this->isNewRecord) {
            $this->created_by = Yii::$app->user->identity->getId();
        }

        return parent::beforeSave($insert);
    }
→ Ссылка