Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2:如何从外部将ActiveRecord对象的属性设置为只读?_Activerecord_Yii2_Rules - Fatal编程技术网

Yii2:如何从外部将ActiveRecord对象的属性设置为只读?

Yii2:如何从外部将ActiveRecord对象的属性设置为只读?,activerecord,yii2,rules,Activerecord,Yii2,Rules,我想大体上问一下这个问题。但我认为和可能是需要这样做的好例子: 我必须怎么做才能使属性只能从ActiveRecord对象的外部读取而不能修改?在某些情况下,应该对其进行内部修改,就像上述行为所要求的那样。但绝不是从外面。如何才能做到这一点?具有用超控二传?恢复更新事件的属性 示例 这应该按预期工作,因为它是类的一部分,被认为是“内部的”: /** *@property integer$创建人 *@property integer$已更新\u */ 类项扩展ActiveRecord{ 公共职能行为

我想大体上问一下这个问题。但我认为和可能是需要这样做的好例子:

我必须怎么做才能使属性只能从ActiveRecord对象的外部读取而不能修改?在某些情况下,应该对其进行内部修改,就像上述行为所要求的那样。但绝不是从外面。如何才能做到这一点?具有用超控二传?恢复更新事件的属性

示例

这应该按预期工作,因为它是类的一部分,被认为是“内部的”:

/**
*@property integer$创建人
*@property integer$已更新\u
*/
类项扩展ActiveRecord{
公共职能行为(){
返回[
[
'class'=>可指责的行为::className(),
'createdByAttribute'=>'CreatedBy',
'updatedByAttribute'=>'updatedByAttribute',
],
];
}
}
这是不可能的。它是如何实现的:

$item->created_by=$user->id;
$item->save();
至少它不应该有任何影响


本例使用了该行为,但可以将其视为任何其他属性。

我认为这是过度复杂,您不必担心

所有活动记录属性都应保持可编辑状态。这些行为提供了什么——只是自动化和某种抽象

但是,作为一名程序员,你所做的一切都取决于你的良心

有时手动修改它们仍然很有用,所以完全锁定它没有任何意义

您应该真正关心的唯一一件事是将它们从
rules()
部分的大规模分配中排除,这样用户就不能修改它了。这应该通过所有手动处理的属性来完成,不要忘记这一点


希望有帮助。

你能提供一些例子吗?我不完全明白。所以你想锁定由属性创建的
的设置吗?@arogachev是的,所以不能意外修改。应该保护该属性。但是,当用户更改并将记录保存到其他属性时,更新的\u仍然应该更改。好的,这是有道理的。谢谢你的想法。如果有人感兴趣,可以进一步阅读维基百科。