Laravel没有将Auth :: id插入表中

时间:2016-10-27 06:16:41

标签: php mysql laravel laravel-5 laravel-5.2

我希望在表格中插入多个列值并回答问题。我在问题表中插入了一个问题表,该表已成功插入。

但它现在没有插入auth:user()id,返回' 0'在表格中

answercontroller代码:

<?php

namespace App\Http\Controllers;

use App\questions;
use Illuminate\Http\Request;
use Auth;
use App\Http\Requests;

class answerController extends Controller
{
    public function store($question_id,Requests\answerAddRequest $request)
    {
        Auth::user()->questions()->findOrFail($question_id)->first()->answers()->create($request->all());
    }
}

如果我删除了questions()->findOrFail($question_id)->first()部分,它会插入auth :: id,但是没有这个,我该如何解决?

2 个答案:

答案 0 :(得分:1)

这是因为当使用相关模型创建模型时,Laravel会自动填充外键。 就像我分割你的查询一样,它看起来像:

$user = Auth::user();
$question = $user->questions()->findOrFail($question_id)->first();
$question->answers()->create($request->all());

此处答案模型由$question模型对象创建,因此它会自动填充question_id,但不会填充user_id,因为它不是使用$user创建的。

但是如果你把你的代码写成:

$user->answers()->create($request->all());

它将自动填充user_id字段。

<强>更新

要填写question_id,您可以写为:

$inputs = $request->all();
$inputs['question_id'] = $question_id;
$user->answers()->create($inputs);

答案 1 :(得分:0)

如果用户ID在answers表中,为什么不这样做:

$request->user_id = auth()->user()->id;
$request->question_id = $question_id;
Answer::create($request->all());

这将只创建一个查询,它更具可读性和可维护性。保持简单。