错误:找不到列:1054“字段列表”中的未知列“ updated_at”

时间:2019-05-28 10:55:57

标签: php html laravel

所以基本上错误提示我没有一列称为updated_at,但我知道我没有,我也不想拥有。我的数据库表仅包含以下几列:请求者,user_requested,id,状态。

这是我的模特

class Friendships extends Model
{
    protected $fillable = ['requester', 'user_requested', 'status'];
}

这是我的个人档案管理员

 public function sendRequest($id){
        return Auth::user()->addFriend($id);

  }

这是我的friendly.php


namespace App\Traits;
use App\Friendships;

trait Friendable{
    public function test(){
        return 'hi' ;
    }

    public function addFriend($id){
        $Friendship = Friendships::create([
                'requester' => $this->id,
                'user_requested' => $id
        ]);


        if($Friendship){
            return $Friendship;
        }
        return  'failed';
    }


}

它说未找到方法addFriend,并且创建显然不起作用,因为未找到ID。

2 个答案:

答案 0 :(得分:2)

默认情况下,Eloquent期望created_atupdated_at列存在于您的表中。如果您不希望Eloquent自动管理这些列,请将模型上的$timestamps属性设置为false

class Friendships extends Model
{
    public $timestamps = false;
    protected $fillable = ['requester', 'user_requested', 'status'];
}  

编辑

射击命令,

php artisan make:migration modify_friendships_table;

然后转到在database/migrations中生成的迁移文件

在该类中编写代码,

Schema::table('friendships', function (Blueprint $table) {
    $table->boolean("status")->default(0)->change();
});

保存在文件上方,然后在命令下触发

php artisan migrate

现在检查其是否正常工作。

答案 1 :(得分:0)

Laravel将自动尝试为created_atupdated_at字段设置值。强烈建议您使用它们,但是,如果您不想这样做,可以在模型上禁用它们。

要执行此操作,只需将public $timestamps = false;添加到模型中。例如:

class Friendships extends Model
{
    public $timestamps = false;
    protected $fillable = ['requester', 'user_requested', 'status'];
}