对于学校项目,我试图从我的项目核心中删除Eloquent(必须直接使用DB,不能使用ORM)。
我现在正在尝试修改AuthController的create函数,但它似乎没有更新。 (使用XAMPP和PHP7。)
正如您所看到的,我尝试用AuthController的create function中的DB :: insert语句替换User :: create default。
protected function create(array $data)
{
return DB::insert('INSERT INTO users (firstname,lastname,birthday,gender,email,password) values(?,?,?,?,?,?)',
array(
$data['firstname'],
$data['lastname'],
$data['birthday'],
$data['gender'],
$data['email'],
bcrypt($data['password'])
)
);
// OLD FUNCTION BODY:
/*return User::create([
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
'birthday' => $data['birthday'],
'gender' => $data['gender'],
'email' => $data['email'],
'password' => bcrypt($data['password'])
]);*/
}
但现在我不断得到:
AuthController.php第71行中的FatalThrowableError:致命错误:调用未定义的方法App \ User :: create()
我认为该函数需要的不仅仅是DB :: insert,它应该返回一个User对象的新实例,但是目前我甚至无法测试它会做什么,因为它仍在尝试调用旧的函数体。我甚至完全删除了User :: create部分。
这是XAMP吗?我没有问题更新和保存这个项目的其他文件,但这个控制器似乎没有通过它。
答案 0 :(得分:0)
你要归还两件完全不同的东西。
return DB::insert
VS
return User::create
查看User :: create返回的内容并从那里开始。
答案 1 :(得分:0)
尝试清理Laravel缓存。然后使用:
return DB::insert(array(
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
'birthday' => $data['birthday'],
'gender' => $data['gender'],
'email' => $data['email'],
'password' => bcrypt($data['password'])
)
);
如果您仍然收到错误,请发布AuthController.php