我在laravel项目的控制器中使用了两种逻辑
public function multiStore()
{
$user = User::create([
'name'=>$request->name,
'email'=>$request->email,
'password'=>Hash::make($request->name),
]);
$post = MyPost::create([
'name'=>$request->post_name,
'body'=>$request->post_body,
]);
return redirect()->to('/admin/home);
}
是否可以让用户创建成功,这样我才能使用由用户关系创建的帖子
我尝试了诸如if条件之类的东西,但是它不起作用
答案 0 :(得分:1)
您可以尝试下面的代码,我假设自从您提到关系船以来,您就在posts表中有一个user_id字段。这不是最好的方法,但是我尝试使事情保持简单,所以我只编辑了代码。
注意:在使用protected $fillable
Create()
中的所有表字段。
public function multiStore()
{
$user = User::create([
'name'=>$request->name,
'email'=>$request->email,
'password'=>Hash::make($request->name),
]);
if($user){
$post = MyPost::create([
'user_id' => $user->id
'name'=>$request->post_name,
'body'=>$request->post_body,
]);
}
return redirect()->to('/admin/home);
}
答案 1 :(得分:1)
将查询包含在数据库事务中
您可以:
DB::transaction(function() {
Model::create();
AnotherModel::create();
});
或者您可以使用以下内容查找并捕获错误...
DB::beginTransaction();
// Your queries here...
// Model::create();
// AnotherModel::create();
DB::commit();