所以基本上错误提示我没有一列称为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。
答案 0 :(得分:2)
默认情况下,Eloquent期望created_at
和updated_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_at
和updated_at
字段设置值。强烈建议您使用它们,但是,如果您不想这样做,可以在模型上禁用它们。
要执行此操作,只需将public $timestamps = false;
添加到模型中。例如:
class Friendships extends Model
{
public $timestamps = false;
protected $fillable = ['requester', 'user_requested', 'status'];
}