如何使用 laravel 将表单字段保存在 2 个表中
Posted
技术标签:
【中文标题】如何使用 laravel 将表单字段保存在 2 个表中【英文标题】:how to save the form fields in 2 tables using laravel 【发布时间】:2017-03-20 14:24:49 【问题描述】:我是laravel的新手。我需要将表单字段一个保存在一个表中,另一个保存在laravel的另一个表中。这两个表具有外键引用。在一个表中保存了数据,但另一个无法保存数据库。任何人都可以为此提出建议吗?
提前谢谢
表格问题: ID, 考试编号, 问题
表答案: ID, question_id, 选项, 答案
模型 1:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Question extends Model
protected $table='question';
public function answer()
return $this->hasMany('Answer');
模型 2:
<?php
namespace App;
namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\Model;
class Answer extends Model
protected $table='answer';
public function question()
return $this->BelongsTo('Question');
添加问题页面
public function add_question()
$exam =DB::table('exam')->select(array('id', 'exam_name'))->get();
return view('add_question')->with('exam',$exam);
//it shows the form page
验证问题和答案详情并将其保存到数据库中
public function validate_question()
$rules = array(
'question'=>'required|max:300'
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
return edirect::back()->withErrors($validator,'login')->withInput(Input::except('question'));
else
$question =new Question;
$question->exam_id = Input::get('exam_id');
$question->question = Input::get('question');
$question->save();
if($question->save())
$answer =new Answer;
$answer ->options = Input::get('options');
$answer ->answers = Input::get('answers');
$question->answer()->save($answer);
Session::flash('message', 'Successfully created question record!');
return Redirect::to('question');
我有错误:
HomeController.php 第 261 行中的 FatalErrorException:找不到类“App\Answer”。
请任何人对此提出建议
【问题讨论】:
你已经尝试了什么? 提供你的存在代码来解决你的问题!! 感谢您的回复 Mr.Amit 和 Mr.Rimon。我包含了我的代码。我犯了什么错误。请您给我建议 【参考方案1】:在您的 Answer
模型中,您已经为其命名了两次(可能是偶然的):
namespace App;
namespace App\Http\Controllers;
显然您的模型位于App
目录中,而不是Controllers
,因此只需删除第二行即可。
另外,在引用关系时,您需要指定正确的路径,App\Question
而不是Question
。在这一点上,您的 Question
模型也是如此。
您的Answer
模型应如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Answer extends Model
protected $table='answer';
public function question()
return $this->BelongsTo('App\Question');
【讨论】:
感谢 James 先生的回复。我使用了您的代码,但出现此错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'answers' in 'field list' (SQL: updatequestion
set id
= , question
= ques, answers
= , options
= opt where id
is null).如何将它保存到数据库中。请建议我以上是关于如何使用 laravel 将表单字段保存在 2 个表中的主要内容,如果未能解决你的问题,请参考以下文章