Php Laravel未将Auth::id插入表中
我希望在表“answers”中插入多个列值。我正在从问题表插入一个问题id,该问题id已成功插入 但它现在并没有插入auth:user()id,而是在表中返回“0” 应答器控制器代码:Php Laravel未将Auth::id插入表中,php,mysql,laravel,laravel-5,laravel-5.2,Php,Mysql,Laravel,Laravel 5,Laravel 5.2,我希望在表“answers”中插入多个列值。我正在从问题表插入一个问题id,该问题id已成功插入 但它现在并没有插入auth:user()id,而是在表中返回“0” 应答器控制器代码: <?php namespace App\Http\Controllers; use App\questions; use Illuminate\Http\Request; use Auth; use App\Http\Requests; class answerController extends C
<?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());
}
}
如果用户ID在答案表中,为什么不这样做:
$request->user_id = auth()->user()->id;
$request->question_id = $question_id;
Answer::create($request->all());
这将只创建一个查询,而且它的可读性和可维护性要高得多。保持简单。这是因为当使用相关模型创建模型时,Laravel会自动填充外键。
例如,如果我拆分您的查询,它将显示为:
$user = Auth::user();
$question = $user->questions()->findOrFail($question_id)->first();
$question->answers()->create($request->all());
此处答案模型由$question
模型对象创建,因此它将自动填充问题id,但不会填充用户id,因为它不是使用$user
创建的
但如果您将代码编写为:
$user->answers()->create($request->all());
它将自动填充用户id字段
更新
要填写问题id,您可以写为:
$inputs = $request->all();
$inputs['question_id'] = $question_id;
$user->answers()->create($inputs);
现在两个都返回“0”。列是people\u id而不是user\u id您是否在$filleble
数组中添加了所有这些字段?是的,你做了什么,dd($request->user\u id,$request->question\u id)代码>显示您是否将其放在答案::
是这是我对答案模式的支持:类答案扩展模型{protected$table='answers';protected$filleble=['Answer','question\u id','people\u id'];protected$primaryKey='answer_id';
它会为问题抛出'2'和一个数组。请发布一个数组。那么如何插入问题\u id?