Laravel 8 无法在某个表中插入或更新数据
Posted
技术标签:
【中文标题】Laravel 8 无法在某个表中插入或更新数据【英文标题】:Laravel 8 Cannot Insert Or Update Data In A Certain Table 【发布时间】:2021-08-31 09:53:05 【问题描述】:我是 Laravel 的新手,我一直在努力将数据插入到某个表中,hods
。该表只有两个字段,一个唯一的 id 和一个名为 user_id
的外键。
下面是Hod
模型的代码:
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Hod extends Model
use HasFactory;
protected $table = 'hods';
protected $primaryKey = 'id';
protected $fillable = 'user_id';
下面是我希望查询发生的控制器中方法的代码:
public function createHOD(Request $request)
// Validate Form Input
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email,except,id',
'password' => 'required|string|min:8|confirmed',
]);
// If Validation Is Successful
if (!$validator->fails())
// Create User THIS QUERY WORKS FINE
$user = User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => Hash::make($request->input('password')),
'user_type' => "HOD"
]);
// Attaching 'HOD' Role To User
$user->attachRole('HOD');
// Adding The User To The HOD Table NOT WORKING
$hod = new Hod();
$hod->user_id = $user->id;
$hod->save();
// TRIED THIS TOO, ALSO NOT WORKING
DB::table('hods')->insert(
['user_id' => $user->id],
);
return response()->json(['success' => 'HOD Successfully Created.']);
else
// Return Error Messages
return response()->json(['error' => $validator->errors()->all()]);
我正在使用AJAX
,下面是处理该方面的代码:
$("#hodSubmit").click(function(e)
e.preventDefault();
var _token = $("input[name=_token]").val();
var name = $("input[name=hod_name]").val();
var email = $("input[name=hod_email]").val();
var password = $("input[name=hod_password]").val();
var password_confirmation = $("input[name=hod_confirmation]").val();
$.ajax(
url: " route('createHOD') ",
type: 'POST',
data:
_token: _token,
name: name,
email: email,
password: password,
password_confirmation: password_confirmation
,
success: function(data)
if ($.isEmptyObject(data.error))
$("#hodForm")[0].reset();
printSuccessMsg("hod");
else
printErrorMsg(data.error, "hod");
);
);
如果您需要其他代码或进一步解释,请告诉我。谢谢
【问题讨论】:
【参考方案1】:将可填充的受保护更改为数组,如文档所说的必须是
protected $fillable = ['user_id'];
更新: 试试这个
$hod = Hod::create(['user_id' => $user->id]);
【讨论】:
感谢您的回复。我试图这样做,但问题仍然存在。您可能还有其他建议吗?以上是关于Laravel 8 无法在某个表中插入或更新数据的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 和 Ajax - 将数据插入表中总是刷新加载
如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值