Присвоение id пользователя в связанной таблице
Есть две таблицы: users и posts. Связь через id пользователя и userId поста.Связь один ко многим. У одного пользователя много постов. Как через форму в yii2(или может быть как-то ещё) сделать так,чтобы при создании поста в админке автоматически присваивался id пользователя,который его создаёт?
Ответы (2 шт):
Чтоб прям совсем на автомате, то надо добавить в таблицу 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);
}