无法更新php activerecord:模型为只读

无法更新php activerecord:模型为只读,php,mysql,activerecord,phpactiverecord,Php,Mysql,Activerecord,Phpactiverecord,我试图使用php activerecord更新用户详细信息表,但每次都出现此错误 ::无法调用save(),因为此模型设置为只读 我可以插入到同一个表中,但无法更新 Details.php <?php class Details extends ActiveRecord\Model { public static $table_name='details'; public static $primary_key='id_user_detail'; public function befo

我试图使用php activerecord更新用户详细信息表,但每次都出现此错误

::无法调用save(),因为此模型设置为只读

我可以插入到同一个表中,但无法更新

Details.php

<?php
class Details extends ActiveRecord\Model
{
public static $table_name='details';
public static $primary_key='id_user_detail';

public function before_create()
{
   $this->date_created      = date("Y-m-d H:i:s");
   $this->date_modified     = date("Y-m-d H:i:s");
}

public function before_update()
{
   $this->date_modified    = date("Y-m-d H:i:s");
}

}?>

如何进行更新?

在实例化类之前,您可能试图更改类属性

Details::find_by_sql()应返回一个新的Details实例。 例如:

public function find_by_sql($sql) {
   //execute sql
   if( some thing is returned ) {
      $details = new Details();
      $details->setByResult($sql_result)

      return $details;
   }

   return null;
}

您可能试图在实例化类之前更改类属性

Details::find_by_sql()应返回一个新的Details实例。 例如:

public function find_by_sql($sql) {
   //execute sql
   if( some thing is returned ) {
      $details = new Details();
      $details->setByResult($sql_result)

      return $details;
   }

   return null;
}

它是只读的这一事实是意料之中的。看

这将使您的模型呈现为只读,这样您就不能在返回的模型上使用任何写方法

无需使用这个复杂的查找器,只需使用AR模型:

 $user  = Details::find(1);
 $user->user_fname="test";
 $user->save();
这是因为
id\u user\u detail
是您的主键。如果您想在另一个字段中查找,比如说
user\u fname
,请执行以下操作:

 $user  = Details::find_by_user_fname('test');
 $user->user_fname="test2";
 $user->save();

请仔细阅读这些查找程序以及如何使用它们,因为您应该避免使用sql查找程序。

它是只读的这一事实是意料之中的。看

这将使您的模型呈现为只读,这样您就不能在返回的模型上使用任何写方法

无需使用这个复杂的查找器,只需使用AR模型:

 $user  = Details::find(1);
 $user->user_fname="test";
 $user->save();
这是因为
id\u user\u detail
是您的主键。如果您想在另一个字段中查找,比如说
user\u fname
,请执行以下操作:

 $user  = Details::find_by_user_fname('test');
 $user->user_fname="test2";
 $user->save();

请仔细阅读这些查找程序以及如何使用它们,因为您应该避免使用sql查找程序。

发生这种情况是因为$user包含数组,save()方法仅用于对象。您可以使用其他查找程序,但当它是一个复杂查询时,您可以使用foreach,然后默认使用查找程序。

发生这种情况是因为$user包含数组,save()方法仅用于对象。您可以使用其他查找器,但当它是一个复杂的查询时,您可以使用foreach,然后默认使用查找器