Ajax &引用;类App\User的对象无法转换为int;拉维误差
我试图在Laravel中使用Ajax请求保存新用户,但我得到以下错误:Ajax &引用;类App\User的对象无法转换为int;拉维误差,ajax,laravel,Ajax,Laravel,我试图在Laravel中使用Ajax请求保存新用户,但我得到以下错误: Object of class App\User could not be converted to int 我必须添加用户已保存的文件,因此我不确定此错误来自何处 以下是UserController: public function save_user(Request $request) { try { if (request()->ajax()) {
Object of class App\User could not be converted to int
我必须添加用户已保存的文件,因此我不确定此错误来自何处
以下是UserController:
public function save_user(Request $request)
{
try {
if (request()->ajax()) {
$lastUserId = User::where('user_id', '>', 0)->orderBy('user_id', 'desc')->get('user_id')->first()->toArray();
$user = new User;
$data = Input::all();
$user->user_id = intval($lastUserId['user_id'] + 1);
$user->user_type = $data['user_type'];
$user->email = $data['email'];
$user->password = 'e10adc3949ba59abbe56e057f20f883e';
$user->first_name = $data['first_name'];
$user->last_name = $data['last_name'];
$user->save();
if ($user > 0) {
return response()->json('Success');
}
return response()->json(['status' => 200, 'message' => 'save success']);
}
} catch (\Exception $e) {
echo $e->getMessage();
}
以下是Ajax请求:
$('#saveUser').on('click', function (e) {
e.preventDefault();
var $inputs = $('#new-user-form :input');
var values = {};
$inputs.each(function () {
if (this.name != '_token' && this.name.length > 0) {
values[this.name] = $(this).val();
}
});
$.ajax({
url: '/api/save_user',
type: "post",
data: values,
dataType: 'JSON',
success: function (data) {
/// location.reload();
}
});
})
这是用户模型
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Detail;
class User extends Authenticatable
{
public function users(){
return $this->hasMany('\App\User'); //Product Model Name
}
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
尝试在控制器中更改此设置
if ($user > 0) {
return response()->json('Success');
}
对此
if ($user) {
return response()->json('Success');
}
在您的情况下,您试图查看用户的集合是否为>0
,因此,您得到了上面的错误,因为Laravel试图将用户的集合
解析为int
数据类型,以使其可计数。将您的条件重构为:
if (count($user) > 0) {
return response()->json('Success');
}
或者另一种方式:
if ($user) {
return response()->json('Success');
}
您是否正在尝试创建新用户?如果是这样的话,为什么不让你的用户id像$table->increments('user_id')
这样,每次创建新用户时,它都会自动增加用户id,您可以删除$user->user\u id=intval($lastUserId['user\u id']+1)
AH.Pooladvand,谢谢-现在我得到了“调用未定义的方法App\User::increments()”你能发布你的users
表格吗是的,我已经更新了这个问题