我想要的是传递已登录的用户ID
ArticleRequest.php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class ArticleRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() {
return true;
}
//validation rules
public function rules() {
return [
'title' => 'required|min:5',
'content' => 'required',
'user_id' => 'required|numeric',
'category_id' => 'required|numeric',
'published_at' => 'required|date',
// 'image'=>'required|image|mimes:png,jpg,jpeg,gif,bmp'
];
}
//custom message
public function messages() {
return [
'title.required' => 'A title is required',
'content.required' => 'Write a content',
'category_id.required' => 'Pick a Category',
// 'image.required' => 'Image should be png,jpg,jpeg,gif,bmp in format'
];
}
}
ArticleController.php
//storing articles
public function store(ArticleRequest $request) {
$id = \Auth::id();
$request['user_id'] = $id;
Article::create($request->all());
flash()->overlay("Your Post has been added!", 'Congratulations');
return redirect('article');
}
以上代码不起作用我不知道。我只是在试验它。但它仍然无法奏效。我想将当前登录用户的id传递给user_id列。
答案 0 :(得分:2)
将user_id
与请求参数结合起来:
Article::create(['user_id' => \Auth::user()->id] + $request->all());
或者如果您已建立关系:
Auth::user()->articles()->create($request->all());
答案 1 :(得分:0)
ArtileRequest
的类型为FormRequest
,您不能像这样添加值。
这是一个可能适合您的代码示例:
//storing articles
public function store(ArticleRequest $request) {
$input = $request->all();
$input['user_id'] = \Auth::user()->id();
Article::create($input);
flash()->overlay("Your Post has been added!", 'Congratulations');
return redirect('article');
}
答案 2 :(得分:0)
我认为您不应该在控制器中编写应用程序逻辑,这会使您在应用程序的其他部分编写相同的代码段,从而导致代码重复。
我还需要告诉你,这不是最好的方法,但它应该可以做到并且很干净。
public function articles()
{
return $this->hasMany(Article::class);
}
public function publishArticle(Article $article)
{
return $this->articles()->save($article);
}
public function store(ArticleRequest $request)
{
$request->user()->publishArticle(new Article($request->all()));
...
}
请记住,您也可以通过请求访问用户。
/**
* Get the user making the request.
*/
$user = $request->user();
答案 3 :(得分:0)
您的ArticleRequest
表单请求对象提供的验证在调用控制器方法之前完成。因此,在控制器中添加的代码无关紧要,在验证发生之前,您将无法修改表单请求对象中的数据。
如果user_id
未通过请求数据进入,则需要将其从表单请求对象中的规则中删除。