手动传递外键值

时间:2018-07-10 11:11:05

标签: laravel

我不能将外键值(即user_id)传递给新创建的文章。

这是我的代码...

<?php

if (is_null($request->user_id)) {
    $request->user_id = $user->user_id;
}

$request->validate(['title' => 'Required|string|min:3', 'body' => 'Required|string|min:5', 'user_id' => 'Required|exists:users,user_id']);

if ($article = Article::create($request->all())) {
    event(new ArticleCreated($user));
    return response()->json(['success' => true, 'reason' => 'Article Created successfully', $article]);
} else {
    return 'Article could not be created';
}

3 个答案:

答案 0 :(得分:0)

尝试一下

public function store(Request $request)
{


  $request->validate([
    'title' => 'Required|string|min:3', 
    'body' => 'Required|string|min:5', 
  ]);

  $data = $request->all();

  //you don't need to validate user_id is correct 
  //if you are using auth middleware in the route
  $user = auth()->user()
  $data['user_id] = $user->id

  if ($article = Article::create($data)) {
     event(new ArticleCreated($user));
     return response()->json([
          'success' => true, 
          'reason' => 'Article Created successfully', 
          $article
     ]);
  } else {
      return 'Article could not be created';
  }
}

希望这会有所帮助

答案 1 :(得分:0)

在Article模型中检查您的可填充数组,必须有user_id,并检查用户ID是否在{{1}}中传递。

答案 2 :(得分:0)

更改此:

 if($article = Article::create($request->all())) {
    $article->user_id = $request->user_id; 
    $article->save();

    event(new ArticleCreated($user));
    return response()->json(['success' => true, 'reason' => 'Article Created successfully', $article]);

}